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;

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM