在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