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

來源:互聯網
上載者: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)

觸發器

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

聯繫我們

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