处理只进行插入的存储过程中的错误的最佳方法吗?
我有一个这样的程序:
PROCEDURE INSERT_TO_TABLES (VAL1 IN NUMBER, VAL2 IN NUMBER, RESULT OUT NUMBER)
IS
BEGIN
INSERT INTO TABLE_1 (A_COLUMN) VALUES (VAL1);
INSERT INTO TABLE_2 (B_COLUMN) VALUES (VAL2);
COMMIT;
END;
如果只有其中一个插件抛出错误,我怎样才能使这个存储过程足够优化以处理回滚并引发从应用程序捕获的异常(C#try / catch)?如果一切正常,则返回值true;如果发生错误,则返回false?
答案 0 :(得分:0)
CREATE OR REPLACE PROCEDURE INSERT_TO_TABLES (VAL1 IN NUMBER, VAL2 IN NUMBER, RESULT OUT
NUMBER, RESULT_ERR OUT VARCHAR2 )
IS
v_err_code number := SQLCODE;
v_err_txt varchar2(4000) := SQLERRM;
Begin
Begin
INSERT INTO TABLE_1 (A_COLUMN) VALUES (VAL1);
INSERT INTO TABLE_2 (B_COLUMN) VALUES (VAL2);
Exception When Others then
RESULT_ERR := v_err_code||' '||v_err_txt;
End;
If ( nvl(v_err_code,0)<0 ) Then
ROLLBACK;
Else
RESULT_ERR :='Committed with success...';
COMMIT;
End If;
End;