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;

  

posted @ 2017-03-17 16:17  xfma  阅读(5373)  评论(0编辑  收藏  举报