0

そのため、現在、データベース内のテーブルの1つを更新するために呼び出すことができる単純なSQLストアドプロシージャがあります。ストアドプロシージャ内に、If条件ステートメントがあります。

IF 1 > 0 THEN   
         UPDATE TABLE_A 
         SET COLUMN_1 =299999 
         WHERE COLUMN_2 ='2014-01-03'  and COLUMN_3=0;

update句を個別に実行すると、テーブルが正常に更新されるため、update句に問題はないと確信しています。表で値が更新されているのがわかります。

ただし、ステートメントの直後にIF(上記のコードのように)配置すると、更新は失敗します(影響を受けた行は返されません)。

IFステートメントも正しいと確信しています(現在、テストのために1> 0としています)。

IFの後に挿入ステートメントを置くと、それも正常に機能します。新しい行がテーブルに挿入されています。これはとても奇妙です。何か助けはありますか?

4

2 に答える 2

3

T-SQLの場合BEGINは、その代わりにステートメントを 使用してみてください

IF 1 > 0
BEGIN
UPDATE TABLE_A 
SET COLUMN_1 =299999 
WHERE COLUMN_2 ='2014-01-03'  and COLUMN_3=0
END
于 2013-01-18T04:17:49.857 に答える
0

これを試して

     UPDATE TABLE_A 
     SET COLUMN_1 =299999 
     WHERE COLUMN_2 ='2014-01-03'  
     AND COLUMN_3=0
     AND 1 > 0 ;              <------- put it in where clause
于 2013-01-18T00:12:16.733 に答える