在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;
function get_baseid return varchar2 is
begin
return paramValue;
-- basecreatedate
function set_date(val number) return number is
begin
paramValue1:=val;
return val;
function get_date return number is
begin
return paramValue1;
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;