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 が成功した場合、それが成功したか失敗したかを知りたいのですが、その方法、確認を取得する必要があります。上記の手順を変更して確認を取得する方法を教えてください。

  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 に答える