在存储过程中什么返回错误信息给客户端呢?

深山老翁 2004-11-06 10:56:58
在存储过程中插入一条记录时我判断是否重复,如果重复返回 "该记录已存在" 信息!
返回后我想用代码捕捉这个错误信息返回给客户端,请教高手,十分感谢!
...全文
236 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
pawly 2004-11-08
  • 打赏
  • 举报
回复
上面过程根据返回值和返回错误描述提示给客户端
pawly 2004-11-08
  • 打赏
  • 举报
回复
/******************************************************************************
*  程序名:撤销支出结算表
* 程序功能:撤销一次性支出结算表,将锁定标志更新为'8'作废
*   输入:结算表编号
*   输出:返回值(=0成功,其它为失败)
*      出错信息
* 作者:Guocy
* 版本日期:2003-12-16
* 执行类型:用户手工执行
******************************************************************************/
CREATE OR REPLACE PROCEDURE SP_5010_CancelPayoutDecl(
pi_jsbbh IN VARCHAR2,
po_RetCode OUT NUMBER,
po_ErrMsg OUT VARCHAR2)
AS
/*--- 撤销支出结算表 Version:20031216 ----------------------------------- */
/*--- 私有局部变量声明 ---------------------------------------------------*/
n_count NUMBER;
BEGIN

-- 初始化
po_RetCode := 0; -- 成功
po_ErrMsg := 'SUCCESS';

n_count := 0;
SELECT COUNT(*)
INTO n_count
FROM sti_ins_payout_decl
WHERE jsbbh = pi_jsbbh;

IF n_count = 0 THEN
po_RetCode := -1;
po_ErrMsg := '找不到此业务对应的支出结算表。';
RETURN;
ELSE
UPDATE sti_ins_payout_decl
SET sdbz_id = '8'
WHERE jsbbh = pi_jsbbh;

END IF;

EXCEPTION
WHEN OTHERS THEN
po_RetCode := -1;
po_ErrMsg := '撤销支出结算表异常错误,描述:'||SQLERRM;

END;
/
zealot_zk 2004-11-08
  • 打赏
  • 举报
回复
可以使用out类型的参数进行返回,但是如果使用.net开发则必须使用oracle提供的那套相应的对象。
GerryYang 2004-11-08
  • 打赏
  • 举报
回复
CREATE OR REPLACE PROCEDURE ProcName(strUserID in Varchar2,intErrorID Out number)IS
tempvar varchar2(20);
Begin
intErrorID := 0;
Select value Into tempvar From mytable Where Name='TRANSDATE';
If tempvar Is Not Null Then
Raise e_TransDate_Not_Found;
End If;
Exception
When e_TransDate_Not_Found Then
--DBMS_OUTPUT.PUT_LINE('TransDate Not Found');
--Rollback;
intErrorID := 1;
When others Then
intErrorID := 1;
End;
mqmmx 2004-11-07
  • 打赏
  • 举报
回复
我也不是很明白但你可以用out参数返回,在程序中极据out参数返回的结果来显示不同的结果给用户。oracle我也是初学,已前一直用sql server,我想sql能用out参数oracle也能吧。
lishuguang 2004-11-06
  • 打赏
  • 举报
回复
可以通过返回值返回错误信息返回给客户端
zmgowin 2004-11-06
  • 打赏
  • 举报
回复
for example:
SQL> create table t1(a int primary key);

Table created.

SQL> insert into t1 values (1);

1 row created.

SQL> create or replace procedure test(a in number)
2 as
3 v_sqlcode number;
4 v_sqlerrm varchar2(200);
5 begin
6 insert into t1 values(a);
7 exception
8 when others then
9 v_sqlcode:=sqlcode;
10 v_sqlerrm:=sqlerrm;
11 dbms_output.put_line(v_sqlcode);
12 dbms_output.put_line(v_sqlerrm);
13 end;
14 /

Procedure created.

SQL> exec test(2)

PL/SQL procedure successfully completed.

SQL> exec test(2)
-1
ORA-00001: unique constraint (GOWIN.SYS_C005281) violated

PL/SQL procedure successfully completed.
深山老翁 2004-11-06
  • 打赏
  • 举报
回复
不可吗?想实现呢?

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧