0

可能重复:
PL/SQL 中受 UPDATE 影响的行数

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 回答 2

0

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

于 2012-11-02T07:55:25.783 回答
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 则更新失败。

于 2012-11-02T07:57:08.373 回答