我得到了以下代码,它或多或少地运行顺畅。
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
中,然后将其用作我邮件的主题。
可悲的是,它必须是动态的,所以我不得不让它发挥作用。
答案 0 :(得分:0)
使用变量不是问题。
可能,这个
@MySubject varchar(max)
@subject参数应该是nvarchar(255)
@ MySubject的价值是多少?它是可读的文字吗?
答案 1 :(得分:0)
空间似乎是问题所在
SET @Subj ='测试主题'<-不起作用 SET @Subj ='Test_Subject'<-有效