将变量用作@Subject和sp_send_dbmail

时间:2015-12-08 07:47:21

标签: sql sql-server sql-server-2012

我得到了以下代码,它或多或少地运行顺畅。

DECLARE @MyId char(4),@MyResult varchar(max), @MySubject varchar(max);
    SET @ID = 5;
    SET @MyId = @ID;

SELECT  @MyResult = SQL_Script FROM Table1 WHERE ID = + @MyId;
SELECT  @MySubject = Subject FROM Table1 WHERE ID = + @MyId;

EXEC msdb.dbo.sp_send_dbmail
  @profile_name='Operator',
  @recipients= 'test@mail.com',  
  @subject= @MySubject,
  @query_result_separator = '   ',
  @query_result_no_padding= 1,
  @body= 'test',
  @query_attachment_filename = 'Test.csv',
  @query= @MyResult , 
  @mailitem_id='1',
  @attach_query_result_as_file = 1 
END

存储在@MyResult中的查询结果很好,但是当我在@MySubject中存储字符串时,我不会收到邮件。

如果我写:

@subject= @MySubject, <-- Doesn't work (The String is not 'NULL')  
@subject = 'test',    <-- works

我必须将位于Table1的字符串保存到@MySubject中,然后将其用作我邮件的主题。

可悲的是,它必须是动态的,所以我不得不让它发挥作用。

2 个答案:

答案 0 :(得分:0)

使用变量不是问题。

可能,这个

@MySubject varchar(max)

@subject参数应该是nvarchar(255)

@ MySubject的价值是多少?它是可读的文字吗?

答案 1 :(得分:0)

空间似乎是问题所在

SET @Subj ='测试主题'<-不起作用 SET @Subj ='Test_Subject'<-有效