Oracle存储过程中的错误代码返回消息 [英] Return Message of Error code in Oracle Stored Proc

查看:94
本文介绍了Oracle存储过程中的错误代码返回消息的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

以下过程(在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存储过程中的错误代码返回消息的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆