- - PR -
ストアドプロシージャの作成で分かりません
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2004-10-08 11:05
現在SQLServerでストアドプロシージャを作成しています。
そこでどうしても詰まっているので知恵を拝借できないでしょうか [使用環境] SQLServer [プログラムの仕様] 月次処理でテーブルを参照して顧客の年齢を更新 する処理 [プログラム] while @@fetch_status = 0 begin set @BirthdayYear = CONVERT(SMALLINT,substring(CONVERT(varchar,@Birthday, 20),0,5)) set @Kazoe = @TodayYear - @BirthdayYear set @TodayMD = CONVERT(SMALLINT,DATENAME(mm,@Today))*100 + CONVERT(SMALLINT,DATENAME(dd,@Today)) set @BirthdayMD=CONVERT(SMALLINT,DATENAME(mm,@Birthday))*100+CONVERT(SMALLINT,DATENAME(dd,@Birthday)) if @Birthday <> null if @TodayMD > @BirthdayMD select sub01(@Age,@Kazoe,@CustomerNo,@Birthday) if @Age <> @Kazoe update MstCustomer set Age = @Kazoe where CustomerNo = @CustomerNo fetch next from Customer into @CustomerNo,@Birthday,@Age end else if @Age <> @Kazoe -1 update MstCustomer set Age = @Kazoe - 1 where CustomerNo = @CustomerNo fetch next from Customer into @CustomerNo,@Birthday,@Age end end end close Customer DEALLOCATE Customer //////////////////////////////////////////////////// 以上のようにプログラムを組んで見たのですが そうしたら誕生日が来た人のみしか更新されません。 恐らく「if @TodayMD <= @BirthdayMD」の前にend がある為にここの処理にくる前に次のレコードを参照して いるからだと思うのですがこの場所の対応がわかりません。 どなたかご教授お願いします。 |
|
投稿日時: 2004-10-08 11:46
こんにちは^^
イマイチ質問の内容がわかりません。 >誕生日が来た人のみしか更新されません。 誕生日が来ない人も更新したいということでしょうか?更新する条件をもう少し詳しく説明してください。 >if @TodayMD <= @BirthdayMD 提示されたSQL見る限りこの構文はどこにも無いようですが、これはどこに記述されているのですか? また、SQLの中で使用している変数やフィールドの型がこれだけだと分からないので、最初にCONVERT等で変換している部分はコメントをつけたほうが、分かり易くなると思います。 あと、質問の内容自体が.NETと全然関係ないので、Database Expert会議室に投稿したほうが回答が得易いと思います。 |
|
投稿日時: 2004-10-08 11:49
ご返答ありがとうございました。
そうですね むこうで質問したはずだったのですがこちらにかきこまれていたので^^ |
1