sp_send_dbmail“<”附近的语法不正确
sp_send_dbmail Incorrect syntax near '<'
我在从 SQL 服务器发送 HTML 格式的电子邮件时遇到问题。
使用下面的代码部分我得到一个 "Line 1, incorrect syntax near '<'"
错误。
SET @tableHTML =
'<H1>Progress Report</H1>' +
'<table border="1">' +
'<tr>' +
'<th>Project Name</th>' +
'<th>Platform</th>' +
'<th>Due By</th>' +
'<th>Current Status</th>' +
'<th>Current State</th>' +
'</tr>' +
CAST (
(
SELECT
td = [Project Name], ' ',
td = Platform, ' ',
td = [Due By], ' ',
td = [Current Status], ' ',
td = [Current State], ' '
FROM [dbo].[table_name]
ORDER BY [Current Status] DESC
FOR XML PATH('tr'), TYPE
) AS NVARCHAR(MAX) ) +
'</table>' ;
我似乎不能把它固定在任何特定的东西上?有什么想法吗?
谢谢
更新 1:
好的,我已经 运行 调试会话中的代码并检查了 @tableHTML 的内容,内容看起来很好,并且填充了预期的数据来自我的 Table.
意味着错误来自其他地方,所以我这次复制了整个查询。
DECLARE @tableHTML NVARCHAR(MAX);
SET @tableHTML =
'<h1>Progress Report</h1>' +
'<table border="1">' +
'<tr>' +
'<th>Project Name</th>' +
'<th>Platform</th>' +
'<th>Due By</th>' +
'<th>Current Status</th>' +
'<th>Current State</th>' +
'</tr>' +
CAST
(
(
SELECT
td = [Project Name], '',
td = Platform, '',
td = [Due By], '',
td = [Current Status], '',
td = [Current State], ''
FROM [dbo].[table_name]
ORDER BY [Current Status] DESC
FOR XML PATH('tr'), TYPE
) AS NVARCHAR(MAX) ) +
'</table>';
EXEC msdb.dbo.sp_send_dbmail
@profile_name = 'db_mail_account',
@recipients = 'example@example.com',
@subject = 'Daily Project Tracking Report',
@query = @tableHTML,
@body_format = 'HTML';
再次感谢。
您似乎希望 @tableHTML
作为电子邮件的正文,但您将其作为 @query
传递,其中必须包含有效的 SQL,因此错误。
尝试使用 @body
代替:
EXEC msdb.dbo.sp_send_dbmail
@profile_name = 'db_mail_account',
@recipients = 'example@example.com',
@subject = 'Daily Project Tracking Report',
@body = @tableHTML,
@body_format = 'HTML';
我在从 SQL 服务器发送 HTML 格式的电子邮件时遇到问题。
使用下面的代码部分我得到一个 "Line 1, incorrect syntax near '<'"
错误。
SET @tableHTML =
'<H1>Progress Report</H1>' +
'<table border="1">' +
'<tr>' +
'<th>Project Name</th>' +
'<th>Platform</th>' +
'<th>Due By</th>' +
'<th>Current Status</th>' +
'<th>Current State</th>' +
'</tr>' +
CAST (
(
SELECT
td = [Project Name], ' ',
td = Platform, ' ',
td = [Due By], ' ',
td = [Current Status], ' ',
td = [Current State], ' '
FROM [dbo].[table_name]
ORDER BY [Current Status] DESC
FOR XML PATH('tr'), TYPE
) AS NVARCHAR(MAX) ) +
'</table>' ;
我似乎不能把它固定在任何特定的东西上?有什么想法吗?
谢谢
更新 1:
好的,我已经 运行 调试会话中的代码并检查了 @tableHTML 的内容,内容看起来很好,并且填充了预期的数据来自我的 Table.
意味着错误来自其他地方,所以我这次复制了整个查询。
DECLARE @tableHTML NVARCHAR(MAX);
SET @tableHTML =
'<h1>Progress Report</h1>' +
'<table border="1">' +
'<tr>' +
'<th>Project Name</th>' +
'<th>Platform</th>' +
'<th>Due By</th>' +
'<th>Current Status</th>' +
'<th>Current State</th>' +
'</tr>' +
CAST
(
(
SELECT
td = [Project Name], '',
td = Platform, '',
td = [Due By], '',
td = [Current Status], '',
td = [Current State], ''
FROM [dbo].[table_name]
ORDER BY [Current Status] DESC
FOR XML PATH('tr'), TYPE
) AS NVARCHAR(MAX) ) +
'</table>';
EXEC msdb.dbo.sp_send_dbmail
@profile_name = 'db_mail_account',
@recipients = 'example@example.com',
@subject = 'Daily Project Tracking Report',
@query = @tableHTML,
@body_format = 'HTML';
再次感谢。
您似乎希望 @tableHTML
作为电子邮件的正文,但您将其作为 @query
传递,其中必须包含有效的 SQL,因此错误。
尝试使用 @body
代替:
EXEC msdb.dbo.sp_send_dbmail
@profile_name = 'db_mail_account',
@recipients = 'example@example.com',
@subject = 'Daily Project Tracking Report',
@body = @tableHTML,
@body_format = 'HTML';