0

簡単な質問だと思っていたのですが、何ヶ月も解決できなかったので、ここに行きます!!!

環境: Microsoft SQL 2008

毎晩実行される qyery があり、承認コードを持たないすべての注文のリストが表示されます。

クエリ:

承認が Null の注文から OrderId、First、Last、Email を選択

結果:

OrderID ファースト ラスト メール

4565 トム・クルーズ Tom@email.com

3423 ジェイミー・フォックス jaime@email.com

これで問題ありません。どの注文が承認されていないかがわかったからです

望ましい結果 親愛なるトム ,

ご注文には承認コードがありません。コードが入力されない場合、次の 48 時間以内にキャンセルされます。

* 望ましい結果* *

任意の時点で、これらのうち 30 個が注文される可能性があるため、クエリを実行して各人に電子メールを生成するだけで済みます。1 人が複数の注文をしている場合は、注文ごとに個別にメールを受け取っても問題ありません。助けてください!!助けとは、方法がわからないので、これを達成する方法のサンプルコードを見せてください。ありがとうございました

4

1 に答える 1

0

電子メールの送信には、SQL Server の電子メール機能を使用できます。

SQL Server を構成したら (このリンクをたどってください); 次のように、ループ内の各メールを簡単に確認できます。

USE msdb
GO
EXEC sp_send_dbmail @profile_name='PinalProfile',
@recipients='tomcruise@Example.com',
@subject='Your Order',
@body='Hi there.'

アップデート

レコードを反復処理する方法の例を次に示します。

declare @temp as table
(
Id int identity,
OrderId int, 
First varchar(255), 
Last varchar(255),
Email varchar(512)

)

insert into @temp
Select OrderId, First , Last ,Email from Orders where Approval is Null

declare @email varchar(512)
       , @index int=1 
       , @upper_bound int
       , @subject varchar(500)

select @upper_bound=max(Id) from @temp


while(@index<=@upper_bound)
BEGIN
select @email=email,@subject='Your order number '+OrderID from @temp where Id=@index

EXEC msdb.dbo.sp_send_dbmail @profile_name='profile',
@recipients=N@email,
@subject=@subject,
@body='Whatever you want to say here.'

select @index=@index+1

END

-- You are done
于 2012-08-24T23:59:46.113 に答える