高級(jí)篇

繼續(xù)上文的初級(jí)篇,聊一聊存儲(chǔ)過(guò)程的常用特性,談?wù)劥鎯?chǔ)過(guò)程在工作中的具體使用,希望能對(duì)讀者有所幫助。

參數(shù)傳入模式

PL/SQL存儲(chǔ)過(guò)程有三種傳參模式in 、out、in out。默認(rèn)情況下(即不寫(xiě))為in模式
先來(lái)看看下面的存儲(chǔ)過(guò)程:

--in 、out、 in out模式測(cè)試create or replace procedure proc_param_demo(p1 in number,p2 out number,p3 in out number) asbegin
  dbms_output.put_line('測(cè)試in    模式存儲(chǔ)過(guò)程中p1的值為:'||p1);--標(biāo)準(zhǔn)輸出
  dbms_output.put_line('測(cè)試out   模式存儲(chǔ)過(guò)程中p2的值為:'||p2);
  dbms_output.put_line('測(cè)試in out模式存儲(chǔ)過(guò)程中p3的值為:'||p3);  --p1 :=100; --報(bào)錯(cuò)
  p2 := 100; --:=PL/SQL標(biāo)準(zhǔn)賦值
  p3 :=100;end;

調(diào)試完錯(cuò)誤之后,調(diào)用上面的存儲(chǔ)過(guò)程,這次調(diào)用我們不直接把值傳遞給存儲(chǔ)過(guò)程的參數(shù)。所以需要使用declare關(guān)鍵字來(lái)聲明變量,然后就可以在執(zhí)行區(qū)域才可以使用這些變量:

declare --聲明區(qū)域p1 number;
p2 number;
p3 number;begin
  p1 := 10;
  p2 := 10;
  p3 := 10;
  proc_param_demo(p1,p2,p3);
  dbms_output.put_line('測(cè)試in    模式存儲(chǔ)過(guò)程后p1的值為:'||p1);
  dbms_output.put_line('測(cè)試out   模式存儲(chǔ)過(guò)程后p2的值為:'||p2);
  dbms_output.put_line('測(cè)試in out模式存儲(chǔ)過(guò)程后p3的值為:'||p3);end;

輸出結(jié)果如下圖所示: