问题描述
以下过程(在Oracle 11g发行版1中)接受sql作为参数&返回其返回码.
The below procedure (in Oracle 11g release 1) accepts a sql as a parameter & returns its return code.
成功返回0
如果不执行更新或不执行删除操作,则返回1
Returns 1 if no update or no delete performs
在出现故障的情况下返回实际的错误代码.
Returns actual error code in case of failure.
如何更改以下过程以将另一个返回的参数返回给我,说"return_message",其中将包含oracle内部错误消息的简短描述?如果成功,它应该说成功",如果没有执行删除/更新,它应该说"nochange"
How can I change below procedure to return me another out param say "return_message" which will contain short description of oracle internal error message? In case of success, it should say "success" and in case no delete/updates performed, it should say "nochange"
CREATE OR REPLACE PROCEDURE "demo"."run_demo"(v_sql IN VARCHAR2, return_code OUT number)
AS
i number;
BEGIN
return_code := 0;
execute immediate v_sql;
i := sql%rowcount;
IF (i<1)
THEN return_code := 1;
END IF;
EXCEPTION
WHEN OTHERS THEN
return_code := SQLCODE;
END;
推荐答案
您要使用SQLERRM函数.
You want to use the SQLERRM function.
这是您的代码:
CREATE OR REPLACE PROCEDURE "demo"."run_demo"(v_sql IN VARCHAR2, return_code OUT number, return_message out varchar2)
AS
i number;
BEGIN
return_code := 0;
execute immediate v_sql;
i := sql%rowcount;
IF (i<1)
THEN return_code := 1;
END IF;
EXCEPTION
WHEN OTHERS THEN
return_message := SQLERRM;
return_code := SQLCODE;
END;
这篇关于Oracle存储过程中的错误代码返回消息的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!