如果UPDATE成功,如何获得确认程序是成功还是失败

时间:2012-11-02 06:48:23

标签: oracle stored-procedures plsql oracle10g oracle11g

  

可能重复:
  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成功,我想知道它是成功还是失败,怎么做,我应该得到一些确认,如何修改上面的proc来获得确认?

  2. 我可以在程序中像这样设定TXN_STATUS ='N'吗?

  3. 这是正确的方式IF StmntType = 'UpdateCS'我可以这样比较,如果它正确的v将在后端创建程序并且即将从前端执行,我多么不知道“StmntType是什么“是

  4. 提前致谢。

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

请尝试以下操作,如果您收到任何编译错误,请告诉我,因为我还没有测试过。

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,则更新失败。