【问题标题】:IF UPDATE is success how to get acknowledegment whether it is sucess or failure in procedure [duplicate]如果更新成功,如何在过程中获得确认是成功还是失败[重复]
【发布时间】:2012-10-22 20:09:20
【问题描述】:

可能重复:
Number of rows affected by an UPDATE in PL/SQL

CREATE PROCEDURE P_Update(in_termid IN VARCHAR2,StmntType IN VARCHAR2)
AS
BEGIN
IF StmntType = 'UpdateCS'
BEGIN
update OP_TTER_MAPPING set TXN_STATUS = 'N' where  TERMINAL_ID = in_termid;
END  

Else If StmntType = 'UpdateHS' 
BEGIN
update OP_TTERMINALMASTER set TXN_STATUS = 'N' where  TERMINAL_ID =  in_termid;
END  
end P_UpdateTIDStatus;
  1. 在上面的过程中,如果UPDATE成功我想知道它是成功还是失败,怎么做,我应该得到一些确认,如何修改上面的过程来得到确认?

  2. 我可以在程序中像这样设置 TXN_STATUS = 'N' 进行分配吗?

  3. 这是正确的方法吗IF StmntType = 'UpdateCS' 我可以像这样比较吗,如果它正确的 v 将在后端创建过程并且我将从前端执行,我怎么知道“StmntType”是什么

提前致谢。

【问题讨论】:

标签: oracle stored-procedures plsql oracle10g oracle11g


【解决方案1】:

尝试如下,如果出现任何编译错误,请告诉我,因为我没有测试过。

CREATE OR REPLACE PROCEDURE P_Update(in_termid IN VARCHAR2,
                          StmntType IN VARCHAR2,
                                     returnval IN OUT NUMBER)
IS 
BEGIN
 IF (StmntType = 'UpdateCS') then
         update OP_TTER_MAPPING set TXN_STATUS = 'N' 
         where  TERMINAL_ID = in_termid;
   END IF;
  returnval := 0;
 EXCEPTION
 WHEN OTHERS THEN
   returnval := 1;
   raise_application_error
      (-20140                                      
      ,'Exception is raised'
      );
END P_Update;

当你从前端调用你的过程时,你可以检查返回值,如果是 1 则更新失败。

【讨论】:

    【解决方案2】:

    sql%rowcount 会给你计数,如果更新不成功,那么你不用担心,它会给你错误... :P 通常人们使用期望捕获这样的错误。希望这会有所帮助..

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-19
      • 2019-02-09
      • 1970-01-01
      • 1970-01-01
      • 2020-03-01
      • 2019-01-14
      相关资源
      最近更新 更多