PLSQL

PL/SQL子程序部分

PL/SQL子程序部分

每個子程序都有一個名字,也有一個參數列表,就像匿名PL/SQL塊一樣,它們有三個部分:

  1. 聲明性部分——這據說是可選部分,子程序的聲明性部分也不會以關鍵字DECLARE開始。聲明性部分還包括類型、遊標、常量、變量、異常以及嵌套子程序。它們被稱為任何子程序的本地變量,當子程序完成執行時,它們也將不複存在。
  2. 可執行部分——可執行部分被稱為強製部分,也有執行指定動作的語句。
  3. 異常處理——據說異常處理是可選的部分,它還包含可以處理運行時錯誤的代碼。

創建一個程序

CREATE [OR REPLACE] PROCEDURE procedure_name [(parameter_name [IN | OUT | INOUT] type [, ....])] {IS | AS} BEGIN  END procedure_name;其中procedure_name指定過程的名稱[OR REPLACE]允許我們修改現有的過程。

procedure_Body包含可執行部分

關鍵字AS用於創建獨立過程,而不是is。

執行單機部署

可以通過兩種方式調用此過程

  1. 使用關鍵字EXECUTE
  2. 從PL/SQL塊調用過程的名稱。

刪除獨立節點

可以使用DROP PROCEDURE語句刪除它。

語法:DROP PROCEDURE PROCEDURE;

子程序中的參數模式

參數模式有三種:

  1. IN——這個參數允許我們向子程序傳遞一個值。這被稱為隻讀參數。它在子程序中就像一個常數。我們不能賦值,我們可以將常量、字麵量、初始化的變量或表達式作為IN參數傳遞。我們也可以初始化為子程序調用中省略的默認值。它被稱為參數傳遞的默認模式,參數被稱為引用傳遞。
  2. OUT——這將向調用程序返回一個值。這就像子程序中的一個變量。我們被允許在賦值後改變它的值和值的引用。實際參數被認為是一個變量,它是按值傳遞的。
  3. IN OUT—將初始值傳遞給子程序,然後將更新後的值返回給調用者。我們可以指定一個值,這個值也可以被讀取。實際參數應該是一個變量,而不是一個常數或表達式,也應該賦值。實際參數是通過值傳遞的。
示例:DECLARE y number;程序cubeNum(x IN OUT number) IS BEGIN x:= x*x *x;結束;開始y: = 3;squareNum (y);dbms_output。Put_line (' cube of (3): ' || y);結束;PL/SQL過程成功完成。執行程序執行cubeNum; Output: cube of (3): 9 PL/SQL procedure successfully completed.

  1. 刪除程序

下降過程cubeNum;

示例:DECLARE y number;程序cubeNum(x IN OUT number) IS BEGIN x:= x*x *x;結束;開始y: = 3;squareNum (y);dbms_output。Put_line (' cube of (3): ' || y);結束;PL/SQL過程成功完成。執行程序執行cubeNum; Output: cube of (3): 9 PL/SQL procedure successfully completed. Deleting Procedure DROP PROCEDURE cubeNum;

參數傳遞方法

傳遞參數有三種方式:

  1. 位置符號——在這種符號中,第一個實際參數被替換為第一個形式參數。第二個實際參數替換第二個形式參數,依此類推。

示例:findavg(a, b, c, d);

  1. 命名符號——在這個實際參數中,使用箭頭符號(=>)與形式參數相關聯。示例:findavg(m=>a, n=>b, o=>c, p=>d);
  2. 混合表示法——在這種表示法中,我們可以混合上述兩種表示法,位置表示法將先於命名表示法。

示例:findavg(a, b, c, p=>d);或者findavg(m=>a, b, c, d);

Baidu
map