2017-07-12 19 views
0

私はそうのように、動的SQL経由で呼び出されるストアドプロシージャにいくつかのパラメータを渡すしようとしています:渡すパラメータ

CREATE PROCEDURE someProc 
    @StartDate datetime, 
    @EndDate datetime 
AS 
    DECLARE @qry varchar(max) = 'EXEC otherProc @StartDate, @EndDate' 

    EXEC msdb.dbo.sp_send_dbmail 
     @recipients = '[email protected]',  
     @subject = 'Test', 
     @query = @qry, 
     @attach_query_result_as_file = 1, 
     @query_attachment_filename = 'result.csv', 
     @query_result_separator = ' ', 
     @query_result_no_padding = 1, 
     @query_result_width = 32767 

しかし、私はこれを実行すると、私はエラー

を取得

スカラー変数 "@StartDate"を宣言する必要があります

これを機能させるにはどうすればクエリを変更できますか?

+0

フォーマット 'convert' –

答えて

1

文字通り書いてください。

DECLARE @StartDate datetime='20170101'; 
DECLARE @EndDate datetime=GETDATE(); 


DECLARE @qry varchar(max) = 'EXEC otherProc {ts''' 
          + REPLACE(CONVERT(VARCHAR(19),@StartDate,126),'T',' ') 
          + '''}, {ts''' 
          + REPLACE(CONVERT(VARCHAR(19),@EndDate,126),'T',' ') + '''}'; 

SELECT @qry; 

結果:このようにそれを試してみてください

EXEC otherProc {ts'2017-01-01 00:00:00'}, {ts'2017-07-12 22:20:39'} 
+0

を使用して' @ qry'変数の日付が魅力のように働きました。ありがとうございました!! – OhlPatrol