Oracle儲存過程語法及編譯過程講解
阿新 • • 發佈:2018-11-02
語法
?1 2 3 4 5 6 7 8 9 10 |
CREATE [ORReplace]
PROCEDURE
[
schema
.] procedure_name
[(argument [{
IN
|
OUT
|INOUT}] datatype,
...
argument [{
IN
|
OUT
|INOUT}] datatype)] {
IS
|
AS
}
[descriptionpart說明部分]
BEGIN
SQLSTATEMENT語句序列
[EXCEPTION例外處理]
END
[procedureName過程名]; |
語法分析
OR REPLACE
是一個可選的關鍵字,建議使用者使用此關鍵字。如果過程已經存在,該關鍵字將重新建立過程,這樣就不必刪除和重新建立過程。
關鍵字IS和AS均可
它們本身沒有區別。IS後面是一個完整的PL/SQL塊,可以定義區域性變數,但不能以DECLARE開始。區域性變數在過程內部存放值。
形式引數可以有三種模式:IN、OUT、INOUT。如果沒有為形式引數指定模式,那麼預設的模式是IN。
IN表示輸入引數
OUT表示輸出引數
HelloWorld!
建立第一個儲存過程HelloWorld
?1 2 3 4 5 |
SQL>
create
or
replace
procedure
helloworld
as
begin
dbms_output.put_line(
'helloworld'
);
end
;
|
1 |
/
|
注:需要在儲存過程輸入完成後回車,下一行輸入”/”回車,才會建立成功。
當提示Procedure created表示儲存過程建立成功。
呼叫HelloWorld!
執行
?1 2 |
SQL>
set
serveroutput
on
;
SQL>
exec
[ute] helloworld;
|
顯示如下結果
?1 2 |
helloworld
PL/SQL
procedure
successfully completed
|
編譯過程
注意:
儲存過程不論建立是否成功,建立過程/函式命令CREATE PROCEDURE或CREATE FUNCTION都將自動把其原始碼存入資料庫中,而編譯程式碼只有在編譯成功後才能存入資料庫中。
只有編譯程式碼被存入到資料庫的儲存過程和函式才能被呼叫。
也就是說,如果你建立儲存過程的語句是錯誤的,那麼儲存過程的原始碼也會放入資料庫,只是被顯示為錯誤。
檢視錯誤請用USER_ERRORS資料字典或用SHOW ERRORS命令,可以查詢到當前系統中錯誤。