PL/SQL 存儲過程入門小例子

1.爲什麼要有存儲過程?

過程是指用於執行特定操作的PL/SQL塊。如果客戶應用經常需要執行特定操作,那麼可以考慮基於這些操作建立過程。(類似C函數,Java方法

2.oracle的存儲過程裏的傳遞參數是怎麼設定的?

當建立過程時,既可以指定過程參數,也可以不提供任何參數。當過程需要傳遞參數時,過程參數包括輸入參數、輸出參數和輸入輸出參數,其中輸入參數(IN)用於接收調用環境的輸入數 據,輸出參數(OUT)用於將輸出數據傳遞到調用環境,而輸入輸出參數(IN OUT)不僅要接收輸入數據,而且還要輸出數據到調用環境。(其中in,out,in out 就是用來表示參數傳遞的方式的,其中若參數後面沒有這個標識符,則默認是in型的,也就是輸入參數

3.建立存儲過程的命令是什麼,語法又是什麼?

命令:create or replace procedure

語法:CREATE [OR REPLACE]PROCEDURE PROCEDURE_name
    (argument1 [mode1] datatype1,argument2 [mode2] datatype2, …)
IS [AS]
PL/SQLBlock;
如上所示,procedure_name 用於指定過程名,argument 用於指定過程參數,IS 或 AS用於開始PL/SQL塊。(注意,當定義參數時,只能指定數據類型,不能指定數據長度;oracle的in(或者out,in out)是放在參數之後的,如:a number out)

4.怎麼讓建立好的過程接受輸入的參數值?

方法1:直接在調用過程時,給參數寫入值。如add(1,2);(假設已經寫好了add(a number,b number)這個存儲過程,用來計算a + b)

方法2:在PL/SQL調用存儲過程時,在參數前加&符號,如add(&c,&d),PL/SQL會彈出輸入c和d值的對話框(假設已經定義好c,d變量)

小例子:

建立一個,計算出a + b 和 a - b 的存儲過程,名爲test(在PL/SQL中實現)

(1) .在PL/SQL中的SQL Window輸入框中輸入:

create or replace procedure test (   
p1 in out number,p2 in number,r1 out number,r2 out number) as
begin  
  r1 := p1 + p2;
  r2 := p1 - p2; 
  p1 := 888;
end test;
(2) .點擊 Execute(F8) . 如果沒有錯誤,可以在PL/SQL左側欄的 All objects 下的 Procedures 文件夾下看到你剛纔建立好的存儲過程

(3) .調用存儲過程,繼續輸入如下代碼:

declare 
  a number(3) := 100;
  b number(4) := 1000;
  c number(5) := 100; 
  d number(4) := 100;
begin
  test(a,b,c,d);   --在PL/SQL中可以<span style="color:#ff0000;"><strong>在語句塊中</strong></span>直接引用,但在Sqlplus(或者commend中)需要call或者execute命令
  dbms_output.put_line('a + b = ' || c);
  dbms_output.put_line('a - b = ' || d);
  dbms_output.put_line('但a的值爲:' || a || ', b的值爲:' || b);
end;
(4) .選中上面這段代碼,點擊 Execute(F8),就可以在輸出框裏看到:

a + b = 1100
a - b = -900
但a的值爲:888, b的值爲:1000
總結:上面寫的test存儲過程裏,p1爲輸入輸出參數,p2爲輸入參數,r1及r2爲輸出參數。以該存儲過程爲主體理解,面對輸入參數只取其值,面對輸出參數只給其賦值,面對輸入輸出參數,先取其值,再給其賦值。如:a作爲輸入輸出參數傳遞給p1,存儲過程先取p1的值100,然後再將888賦值給p1,這樣a的值就變爲888了。





發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章