Oracle的預存程序

來源:互聯網
上載者:User

一、預存程序:

a)        
預存程序和函數也是一種PL/SQL塊,是存入資料可的PL/SQL塊。但預存程序是以命名的方式儲存與資料庫中;

b)        
預存程序的優點:

                           
i.              預存程序和函數以命名的資料庫物件形式儲存與資料庫中。

                          ii.             
預存程序和函數可由資料庫提供安全保證,想要使用預存程序和函數,需要有預存程序的所有者的授權,只有被授權的油壺或建立這本身才能執行預存程序或回呼函數。

                         iii.             
預存程序和函數的資訊是寫入資料庫字典的,1所以預存程序可以看做是一個公用用模組。

                         iv.             
像其他進階語言的過程和函數一樣。可以傳遞參數給預存程序或函數。

c)        
預存程序和函數需要進行編譯,以排除語法錯誤,只有編譯通過才能調用。

二、建立預存程序

a)        
建立預存程序,需要有CREATE PROCEDURE 或 CREATE ANY PROCEDURE的系統許可權。該許可權可有系統管理員授予。

b)        
CREATE [OR REPLACE] PROCEDURE 預存程序名[(參數[IN|OUT|IN OUT]資料類型…)]{AS|IS}

BEGIN

可執行部分

[EXCEPTION 錯誤處理部分]

END[過程名];

c)        
關鍵字

                           
i.              OR REPLACE表示如果預存程序已經存在,則用新的預存程序覆蓋,通常用於預存程序的重建。

                          ii.             
參數部分用於定義多個參數(如果沒有參數,就可以省略)。參數有三種形式:IN、OUT和
IN OUT。如果沒有指明參數的形式,則預設為 IN。

                         iii.             
關鍵字 AS也可以寫成 IS,後跟過程的說明部分,可以在此定義過程的局部變數。

三、調用預存程序

a)        
方法

                           
i.              EXECUTE
模式名.預存程序名[(參數…)];

                          ii.             
   BEGIN

模式名.預存程序名[(參數…)]

END;

b)        
傳遞的參數必須與定義的參數類型、個數和順序一致(如果參數定義預設值,則調用時可以省略參數),參數可以是變數。常量或運算式。

c)        
例:建立一個顯示僱員總人數的預存程序,並執行該預存程序

Create or replace procedure emp_count --建立預存程序

Is

v_total number(10);--聲明變數,但這裡不能寫declare來定義

beging

       select count(*) into v_total from emp;

       dbms_output.put_line(‘僱員人數為:’||v_total);

end;

--執行預存程序

execute emp_count

d)        
例:編寫顯示僱員資訊的預存程序EMP_LIST,並引用EMP_COUNT預存程序。

Create or replace procedure emp_list--建立預存程序

Is

Cursor c is

       select  empo,ename,sal from emp;

begin

       for v_emp in c loop

       dbms_output.put_line(v_emp.empno||’,’||v_emp.ename||’,’||v_emp.sal);

end loop;

emp_count;

end;

--執行預存程序

execute emp_list;

        

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.