我可以在可执行电子邮件中包含json_value列吗?



我正在尝试创建一个触发器,通过电子邮件发送插入查询的结果。表要求我创建json_value列,我正在努力在可执行文件的查询部分获得语法正确。

我通常是这样为json_value列编写查询的:

SELECT
json_value(property_dict,'$.level_1.level_2.description')
FROM [database].[dbo].[table]

当在可执行文件中像上面那样编写查询时,我在'$.'附近得到"语法不正确。

EXEC msdb.dbo.sp_send_dbmail
@profile_name = 'MSSQLAlert',
@recipients = 'email@domain.com',
@subject = 'Test Email',
@query = 'SELECT TOP 1 json_value(jsoncolumn,'$.level_1.level_2.description')
FROM [database].[dbo].[table]',
@attach_query_result_as_file = 0

如果我不包括$和描述之外的引号,我得到"初始化sqlcmd库失败,错误编号为-2147467259.">

EXEC msdb.dbo.sp_send_dbmail
@profile_name = 'MSSQLAlert',
@recipients = 'email@domain.com',
@subject = 'Test Email',
@query = 'SELECT TOP 1 json_value(jsoncolumn,$.level_1.level_2.description)
FROM [database].[dbo].[table]',
@attach_query_result_as_file = 0

我想做的是可能的吗?谢谢你的帮助!

由于您的查询包含在作为参数值传递的字符串值中,因此您只需要在查询中转义单引号。试试这个:

EXEC msdb.dbo.sp_send_dbmail
@profile_name = 'MSSQLAlert',
@recipients = 'email@domain.com',
@subject = 'Test Email',
@query = 'SELECT TOP 1 json_value(jsoncolumn,''$.level_1.level_2.description'')
FROM SomeTable',
@attach_query_result_as_file = 0;

最新更新