Oracle视图传递参数
在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;