預存程序、函數、觸發器,預存程序觸發器

來源:互聯網
上載者:User

預存程序、函數、觸發器,預存程序觸發器
預存程序、函數、觸發器的區別

比較項目 預存程序 函數
是否有傳回值 可以有,也可以沒有 必須有且只有一個
是否可以單獨執行 可以 必須通過execute執行
SQL語句(DML或SELECT)可否調用 不可以 可以,且可以位於FROM關鍵字的後面(由於可以返回表對象)
參數類型 可以使用IN、OUT、IN OUT三種模式的參數 只有IN,Oracle可以使用IN、OUT、IN OUT三種參數
傳回值類型 可以通過OUT、IN OUT參數返回零個或多個參數值 單一值或一個表對象

1)一般來說,預存程序實現的功能要複雜一點,而函數實現的功能針對性比較強。
2)預存程序一般是作為一個獨立的部分來執行(參照下面“預存程序-調用方法”),而函數可以作為查詢語句的一個部分來調用(用在select後面,或者from後面)。由於函數可以返回一個表對象,因此它可以在查詢語句中位於FROM關鍵字的後面。

預存程序

預存程序(Stored Procedure )是一組為了完成特定功能的SQL 陳述式集,經編譯後儲存在資料庫中。預存程序經過語法檢查和編譯的SQL語句,所以執行速度比普通的SQL語句的執行速度快。使用者通過指定預存程序的名字並給出參數(如果該預存程序帶有參數)來執行它。

特點缺點基本文法
create procedure <過程名>(<參數列表,無參時忽略>)as|is變數聲明、初始化begin業務處理、邏輯代碼exception異常捕獲、容錯處理end <過程名>;參數:<參數名> in|out|in out <參數類型,無長度說明> ,如:v_name varchar2in:入參out:出參in out:出入參註:as|is表示as或is
調用文法

調用文法:

1)exec <過程名>;

2)execute <過程名>;

3)對於Oracle資料庫,可在PL/SQL語句塊中直接調用。(Oracle)

函數

資料庫中的函數包括內建函數和自訂函數,內建函數是諸如SUM(),COUNT(),AVG()等資料庫內建的函數。一般我們編寫的函數都屬於自訂函數。

特點基本文法
create function <函數名>(<參數列表,無參時忽略>)return <傳回值類型,無長度說明>as|is變數聲明、初始化begin業務處理、邏輯代碼return <返回的值>;exception異常捕獲、容錯處理end <函數名>;參數:in 入參註:只有入參的類型。
調用文法

1)在SQL語句(DML或SELECT)中調用函數
2)對於Oracle資料庫,可在PL/SQL語句塊中直接調用。(Oracle)

觸發器

觸發器是特殊的預存程序,預存程序需要程式調用,而觸發器會自動執行;

相關文章

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.