• 締切済み

ループして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

みんなの回答

  • dora7075
  • ベストアンサー率39% (103/261)
回答No.2

このSQL文は動的SQLですが、EXEC文はどこかで記述されていますか? 動的SQLの実行がなされていないように思います。

planet-m
質問者

お礼

dora7075様 回答ありがとうございます。 おっしゃるとおり、SQLをEXECで実行させたところうまくいきました↓。 いろいろとありがとうございました!!。 SET @querystring='UPDATE ユーザー情報 SET ' + @StrFileds1 + ' = 1 WHERE (' + @StrFileds2 + ' IS NOT NULL)' EXEC (@querystring)

  • dora7075
  • ベストアンサー率39% (103/261)
回答No.1

>なんか上手くいかないんです。 ここの情報をもう少しください。どう上手くいかないんでしょうか? コンパイルできない?テスト結果が思ったようにならない??

planet-m
質問者

補足

dora7075様 早速の回答ありがとうございます。 ストアドを実行すると 「コマンドは正常に完了しました」 になるので、エラーにはならないようです。 ただ、テーブルにUPDATE実行結果が反映されていないのです。 よろしくお願いいたします。

関連するQ&A