2017-08-17 6 views
1

私は電子メールを送信するためにクエリからユーザーIDを入力しようとしています。 それはこのシナリオでどのように動的クエリを実行できますか。 SQL 2005

を仕事と私は、このエラーを与えていないメッセージ14624、レベル16、状態1、プロシージャのsp_send_dbmail、ライン238は 、少なくとも次のいずれかのパラメータを指定する必要があります。 "@recipients、 @copy_recipients、@blind_copy_recipients"。

declare @bodymsg nvarchar(max) 
select @bodymsg = '<font face="calibiri" size="4" >Dear Users</font><br><br> 
<font face="calibiri" size="5" color="red">Please Explain the Exrta Locked Faxes</font><br><br> 
<font face="calibiri" size="4" >Check the Last Hour Snapshot Details Attached.<br><br> 
Thanks</font></end>' 

declare @users_fetched varchar(max) 
set @users_fetched = 'SELECT distinct Locked_Faxes_Last_Hour_Snap.userid from Locked_Faxes_Last_Hour_Snap' 


declare @recipients varchar(max) 

SELECT 
@recipients = STUFF((SELECT ';' + concerned_staff.staff_email from concerned_staff where (concerned_staff.staff_id in ('@users_fetched')) 
         FOR XML PATH('') 
         ), 1, 1, '') 

EXEC msdb.dbo.sp_send_dbmail 


@recipients = @recipients , 

@body= @bodymsg , 
@subject = 'Alert !!! Locked Faxes Violation Last Hour Snaps' , 
@profile_name = 'Database Profile 1', 
@query = 'use qtel select * from dbo.Locked_Faxes_Last_Hour_Snap' , 
@attach_query_result_as_file = 1, 
@query_attachment_filename ='Locked_Faxes_Last_Hour_Snap.csv', 
@query_result_separator =',', 
@query_result_no_padding=1, 
@exclude_query_output=1, 
@append_query_error=0, 
@query_result_header =1, 
@body_format ='HTML', 
@importance= 'HIGH'; 
+1

それが何を返すん:あなたは、受信者を作成するときにだけ、サブクエリのWHERE条件として、ユーザーを取得するためにクエリを置きますか? – scsimon

+0

@scsimon atrecipientsを選択すると "null"となり、atusers_fetchedを選択すると "Locked_Faxes_Last_Hour_Snapから別個のLocked_Faxes_Last_Hour_Snap.userid"が出力されます:( –

+0

なぜ動的SQLを使用するのですか?あなたの選択を ''@ users_fetched' 'の代わりにサブクエリに入れ、それを実行してください。今は、それが属していないクエリ文字列を混合しています。動的クエリは全く異なるアプローチを必要とします。 –

答えて

2

あなたはここで動的SQLを必要としません。あなたがexecのmsdb.dbo.sp_send_dbmailコマンドをコメントアウトして@recipientsを選択した場合は

SELECT 
@recipients = STUFF((SELECT ';' + concerned_staff.staff_email 
        from concerned_staff 
        where concerned_staff.staff_id in 
        (
         SELECT Locked_Faxes_Last_Hour_Snap.userid 
         from Locked_Faxes_Last_Hour_Snap 
        ) 
        FOR XML PATH('') 
        ), 1, 1, '') 
+0

おかげで嬉しいです:) Lovely –

関連する問題