在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;
