在Oracle里,視圖不像存儲過程和函數一樣,可以定義輸入參數,但我們可以變個方式,使用程序包來實現。
oracle package:
oracle package是oracle包,是一組相關過程、函數、變量、常量、類型和游標等PL/SQL程序設計元素的組合。包具有面向對象設計的特點,是對這些PL/SQL程序設計元素的封裝。
Oracle的Package的作用:
簡化應用設計、提高應用性能、實現信息隱藏、子程序重載。
package 和 package body 有什么區別?
package是各個方法的定義,package body是具體的實現,這兩個是一體的,必須同時存在
一.首先定義程序包:
create or replace package p_view_param_test is --參數一 function set_baseid(val varchar2) return varchar2; function get_baseid return varchar2; --參數二 function set_date(val number ) return number; function get_date return number; end p_view_param_test; create or replace package body p_view_param_test is paramValue varchar2(100); paramValue1 number; -- baseid function set_baseid(val varchar2) return varchar2 is begin paramValue:=val; return val; end; function get_baseid return varchar2 is begin return paramValue; end; -- basecreatedate function set_date(val number) return number is begin paramValue1:=val; return val; end; function get_date return number is begin return paramValue1; end; end p_view_param_test;
二、創建視圖
CREATE OR REPLACE VIEW view_test as select * from test where baseid =p_view_param_test.get_baseid() and basecreatedate =p_view_param_test.get_date();
三、sql調用
select * from view_test where p_view_param_test.set_baseid('055e5b14-e8e5-4be7-9823-4976daa5902f')='055e5b14-e8e5-4be7-9823-4976daa5902f' and p_view_param_test.set_date(1473423713)=1473423713;