在Oracle中如何創建帶參數的視圖?


本文介紹了oracle數據庫中創建帶參數視圖的例子,有需要的朋友參考下。

在Oracle中如何創建帶參數的視圖?
 
Oracle數據庫中,視圖不像存儲過程和函數一樣,可以定義輸入參數,但可以變個方式,使用程序包來實現。
 
首先,定義程序包:
 

復制代碼 代碼示例:

/* 按個人需要定義,我定義三個參數 ,因我項目程序需要,所以三個參數都是number ,當然可定義其它類型
但切記,第二個create 的參數類型等需以第一個create一致,否則程序包創建失敗
*/
create or replace package p_view_param  is
       --參數一
   function set_param(num number) return number;
   function get_param  return number;
   --參數二
   function set_Type(num number) return number;
   function get_Type  return number;
   --參數三
   function set_Id(num number) return number;
   function get_Id  return number;
   end p_view_param;
--
 create or replace package body p_view_param is
       paramValue number;
       paramType number;
        paramId number;
       -- Param
       function set_param(num number) return number is
       begin
         paramValue:=num;
         return num;
        end; 
      
       function get_param return number is
       begin
         return paramValue;
       end;
       -- Type
       function set_Type(num number) return number is
       begin
         paramType:=num;
         return num;
        end; 
      
       function get_Type return number is
       begin
         return paramType;
       end;
        -- ID
       function set_Id(num number) return number is
       begin
         paramId:=num;
         return num;
        end; 
      
       function get_Id return number is
       begin
         return paramId;
       end;
      
   end p_view_param;
 

創建時記得先創建第一個;
 
接下來定義視圖:
 

復制代碼 代碼示例:

/*
*定義視圖,where 后面跟參數,可自己拼裝,注意視圖字段要和select的字段匹配
*/
CREATE OR REPLACE VIEW abstract_sum_view(fa_id, aircraft_num,aircraft_weight,airline_code,anchor_pos)
            AS SELECT f.fa_id, f.aircraft_num,findweight(f.aircraft_num),f.airline_code,f.anchor_pos
            FROM tb_flight_abstract f
             where f.fa_id=p_view_param.get_Id(); --參數
           
--使用視圖,傳參
 select *  from abstract_sum_view  where p_view_param.set_id(3)=3 ;
 

 


免責聲明!

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



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