- 締切済み
ループしてUPDATEするストアドについて
よろしくお願いいたします。 表題の件どうしてもわからなかったので、皆様どうかご教示お願いいたします。 下記ストアドを作成いたしました。 内容としては UPDATE文 「ユーザー情報 SET 通知f1 = 1 WHERE (送信先1 IS NOT NULL) AND (送信先1 <> '')」 の 通知fが1から30 送信先が1から30 をループして実行するといったいたってシンプルなのもです。 が、なんか上手くいかないんです。 ALTER PROCEDURE [dbo].[test] AS DECLARE @Counter int DECLARE @StrFileds1 varchar(1000) DECLARE @StrFileds2 varchar(1000) SET NOCOUNT ON SET @Counter = 1 SET @StrFileds1='' SET @StrFileds2='' WHILE @Counter <= 30 BEGIN SET @StrFileds1='通知f'+Convert(varchar,@Counter) SET @StrFileds2='送信先'+Convert(varchar,@Counter) SET @Counter=@Counter+1 BEGIN UPDATE ユーザー情報 SET @StrFileds1 = 1 WHERE (@StrFileds2 IS NOT NULL) AND (@StrFileds2 <> '') END END
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- dora7075
- ベストアンサー率39% (103/261)
このSQL文は動的SQLですが、EXEC文はどこかで記述されていますか? 動的SQLの実行がなされていないように思います。
- dora7075
- ベストアンサー率39% (103/261)
>なんか上手くいかないんです。 ここの情報をもう少しください。どう上手くいかないんでしょうか? コンパイルできない?テスト結果が思ったようにならない??
補足
dora7075様 早速の回答ありがとうございます。 ストアドを実行すると 「コマンドは正常に完了しました」 になるので、エラーにはならないようです。 ただ、テーブルにUPDATE実行結果が反映されていないのです。 よろしくお願いいたします。
お礼
dora7075様 回答ありがとうございます。 おっしゃるとおり、SQLをEXECで実行させたところうまくいきました↓。 いろいろとありがとうございました!!。 SET @querystring='UPDATE ユーザー情報 SET ' + @StrFileds1 + ' = 1 WHERE (' + @StrFileds2 + ' IS NOT NULL)' EXEC (@querystring)