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

來源:互聯網
上載者:User

標籤:

本文介紹了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 ;
 

 

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

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.