1. 程式人生 > >Oracle中建立儲存過程和呼叫過程(一)

Oracle中建立儲存過程和呼叫過程(一)

1、定義


        所謂儲存過程(Stored Procedure),就是一組用於完成特定資料庫功能的SQL語句集,該SQL語句集經過
編譯後儲存在資料庫系統中。在使用時候,使用者通過指定已經定義的儲存過程名字並給出相應的儲存過程引數
來呼叫並執行它,從而完成一個或一系列的資料庫操作。 

 

2、儲存過程的建立

Oracle儲存過程包含三部分:過程宣告,執行過程部分,儲存過程異常。

(1)無參儲存過程語法

create or replace procedure sample_proc 
as  --宣告
 msg varchar2(50);
begin  --執行
  msg:='Hello world';--為引數賦值
  dbms_output.put_line('你好的英文為:'||msg);--輸出引數
exception --存貯過程異常
  ;
end;

--有三種執行語法
--執行語法1
call sample_proc();
--執行結果
sample_proc ) 成功。
你好的英文為:Hello world

--執行語法2
exec sample_proc;
--執行結果
匿名塊已完成
你好的英文為:Hello world

--執行語法3
set serveroutput on
begin
 sample_proc;
end;
--執行結果
匿名塊已完成
你好的英文為:Hello world

 (2)帶參儲存過程例項

create or replace procedure count_proc(detpcode in varchar,num out number)
as 
 cot number(5);--宣告
begin
  select count(*) into cot from pat_visit_user where dept_code=detpcode;--sql語句
  num:=cot;--賦值
end;

variable num varchar2(50);--用於宣告變數,也可以用簡寫var

exec count_proc('z128',:num);--執行儲存過程

--執行結果
PROCEDURE COUNT_PROC 已編譯
匿名塊已完成


print num;--輸出變數
--執行結果
NUM
-
3

其中引數IN表示輸入引數,是引數的預設模式。
OUT表示返回值引數,也就是輸出引數。型別可以使用任意Oracle中的合法型別。
OUT模式定義的引數只能在過程體內部賦值,表示該引數可以將某個值傳遞迴呼叫他的過程
IN OUT表示該引數可以向該過程中傳遞值,也可以將某個值傳出去