oracle學習筆記(十九) 子程式 儲存過程

2022-01-12 09:02:45 字數 1853 閱讀 2184

我們可以使用子程式來封裝一下我們需要的操作,子程式又有儲存過程,函式和觸發器。

這裡先學習儲存過程~

create [or replace] procedure $procedure_name$ [(引數列表)]

is/as --相當於declare

begin

[exception]--異常處理

end $procedure_name$;

刪除過程:drop procedure $procedure_name$

建立無引數儲存過程
create or replace procedure hello

is begin

dbms_output.put_line('hello world');

end hello;

/ --執行

建立帶參儲存過程

引數有三種模式,引數型別定義不用定義寬度

模式說明

in(預設)

模式的引數, 可以是字面量或變數形式傳值

out模式的引數, 必須以變數形式傳遞,變數不應該賦值,接收過程中返回的結果

in out

模式的引數, 必須以變數形式傳遞

--輸出指定字串(使用in)

create or replace procedure print(text in varchar2)

is begin

dbms_output.put_line(text);

end print; /

--計算結果,返回給呼叫者(使用out)

create or replace procedure sum(num1 in int,num2 in int,result out int)

is begin

result := num1 +num2;

end sum;

/declare

--變數不應該賦值

v_result int := 5;

begin

sum(5,6,v_result);

--上面的語句還可以這樣寫,這樣便於直觀的知道引數對應哪乙個

--sum(num1 =>5,num2=>6,result=>v_result);

dbms_output.put_line(v_result);

end;

/--交換兩個數字(使用in out)

create or replace procedure swap(a in out int,b in out int)

is v_temp int ;

begin

v_temp := a;

a := b;

b := v_temp;

end swap;

/declare

a int :=5;

b int := 9;

begin

swap(a,b);

dbms_output.put_line(a||','||b);

end;

/

pl/sql執行
begin

--包名.過程名

--未定義包名,不需要寫包名

$procedure_name$;

end;

/

--如果想要其他使用者訪問當前使用者的儲存過程,當前使用者下,授權給其他使用者許可權

grant execute on $procedure_name$ to $user_name$;

命令列執行
exec/execute $procedure_name$[(引數)]

perl子程式學習筆記

一.定義 子程式即執行乙個特殊任務的一段分離的 它可以使減少重複 且使程式易讀.perl中,子程式可以出現在程式的任何地方.定義方法為 sub subroutine 二.呼叫 呼叫方法如下 1.用 呼叫 subname sub subname 2.先定義後呼叫,可以省略 符號 sub subname...

Oracle 子程式內聯

start 如果子程式 a 呼叫 b,內聯可以把 b 的 合併到 a 中,從而減少子程式呼叫,提高效能,下面是乙個簡單的例子。子程式 a procedure a isbegin 指定下面的子程式 b 內聯 pragma inline b,yes b 1 注意此處的子程式不會內聯 b 2 end a ...

Perl函式 子程式 學習筆記

一 函式定義 子程式即一段分離的 它可以使減少重複 且程式易讀.perl中,子程式可以出現在程式的任何地方.但一般放在程式的開始或結尾.複製 如下 sub subroutine sub開始,子程式名同變數的命名規則,可與變數同名,最好不要與內部函式同名,如果與內部函式同名則用 subroutine區...