oracle存儲過程exception
㈠ oracle怎麼寫存儲過程
給你示例你參考下:
----------------------------建立存儲過程:
CREATE OR REPLACE PROCEDURE P_name--存儲過程名字
(
i_var in int, --輸入參數1
o_var OUT varchar2 --輸出參數1
)
IS
v_STR VARCHAR2(200); --定義存儲過程內部的局部變數
BEGIN
--下面是存儲過程的主體實現部分
v_STR := i_var;
dbms_output.put_line(v_STR);
o_var := v_STR;
exception--錯誤異常處理部分
when others then
dbms_output.put_line(sqlerrm);--列印錯誤信息
END P_name;
-----------------------------------調用存儲過程示例:
declare
v_in int;
v_out varchar2(50);
begin
v_in :=100;
P_name (v_in,v_out); --調用存儲過程P_name
dbms_output.put_line('存儲過程輸入結果為:'||v_out);
exception--錯誤異常處理部分
when others then
dbms_output.put_line(sqlerrm);--列印錯誤信息
end;
㈡ 請教關於oracle中寫存儲過程時 select into 語句報錯的問題
定義一個塊,塊中說明異常情況下如何處理就可以了。
begin
select 欄位 into 變數...
exception
when NO_DATA_FOUND then --未找到時
處理邏輯
when exception_code then --這里的錯誤代碼可以在standard包中找到
處理邏輯
when OTHERS then --default錯誤時
處理邏輯
end;
錯誤代碼可通過如下語句獲得:
select * from dba_source where owner='SYS' and name='STANDARD' and type='PACKAGE' and text like ' pragma EXCEPTION%';
㈢ 請教各位高手 oracle 存儲過程 如何獲得 捕獲異常的內容
--通過sqlcode , sqlerrm 這兩個內置變數來查看,例如:
DECLARE
--聲明異常
some_kinds_of_err EXCEPTION; -- Exception to indicate an error condition
v_ErrorCode NUMBER; -- Variable to hold the error message code
v_ErrorText VARCHAR2(200); -- Variable to hold the error message text
BEGIN
--...
--拋出異常
IF ( ... ) THEN --(括弧內填拋出異常的條件)
RAISE some_kinds_of_err;
END IF;
--...
EXCEPTION
--捕捉異常
WHEN some_kinds_of_err THEN
/* do something to Handler the errors */
null;
--捕捉其他異常,並獲得 捕獲異常的內容
WHEN OTHERS THEN
v_ErrorCode := SQLCODE;
v_ErrorText := SUBSTR(SQLERRM, 1, 200);
-- Note the use of SUBSTR here.
dbms_output.put_line(v_ErrorCode || '::'||v_ErrorText);
END;
/
/**
sqlcode 就是錯誤代碼
sqlerrm 就是sql錯誤信息。注意用substr來截取,否則輸出很難看。
**/
㈣ oracle 存儲過程,請問這樣的一個存儲過程執行中其中一條語句報錯,接下來的語句還會執行嗎
不會,直接拋出異常,並終止。存儲過程是預編譯sql的,主題出錯會導致整個存儲過程執行失敗。
㈤ 在使用oracle創建存儲過程部分代碼: EXCEPTION WHEN NO_DATA_FOUND THEN NULL; WHEN OTHERS THEN RAISE;
NULL 當沒有數據時,拋出空值
RAISE 是用來拋出異常的,沒帶參數的如你上面的這種,就是將當前的異常傳到外部程序。