尝试连接列标题时,我不断收到“ +”附近的错误语法。我尝试遵循以下教程:
DECLARE @tab char(1) = CHAR(9)
DECLARE @Column1Name VARCHAR(255)
SET @Column1Name = '[sep=,' + CHAR(13) + CHAR(10) + 'Date]'
EXEC msdb.dbo.sp_send_dbmail
@recipients = 'test@gmail.com',
@attach_query_result_as_file = 1,
@query_attachment_filename='test.csv',
@query_result_separator=@tab,
@query_result_no_padding=1,
@body = 'See attached file',
@subject = 'Testing Data',
@query = '(SELECT CONVERT(CHAR(20), Date, 20) AS' + @Column1Name + ',
Column2 FROM testTable)'
答案 0 :(得分:4)
在执行存储过程时,不能提供表达式作为参数。
首先将完整结果设置为变量,然后只需将该变量作为参数传递即可。
DECLARE @tab char(1) = CHAR(9)
DECLARE @Column1Name VARCHAR(255)
SET @Column1Name = '[sep=,' + CHAR(13) + CHAR(10) + 'Date]'
DECLARE @query VARCHAR(MAX) = '(SELECT CONVERT(CHAR(20), Date, 20) AS' + @Column1Name + ', Column2 FROM testTable)'
EXEC msdb.dbo.sp_send_dbmail
@recipients = 'test@gmail.com',
@attach_query_result_as_file = 1,
@query_attachment_filename='test.csv',
@query_result_separator=@tab,
@query_result_no_padding=1,
@body = 'See attached file',
@subject = 'Testing Data',
@query = @query
PD::构建动态SQL时,您可能需要检查是否需要在串联之间添加空格。在这种情况下, 不需要 ,因为您已经有了方括号,但也可能习惯于添加空格。
... '20) AS ' + @Column1Name + ' , Column2 FROM testTable)'
答案 1 :(得分:1)
您可能需要在其中添加额外的空间。 当前它将解析为 CONVERT(CHAR(20),Date,20)AS @ Column1Name