首页 > 解决方案 > SQL Server 邮件变量用法

问题描述

我想在 SQL Server 上使用发送邮件实用程序,其中收件人变量 (@recipients) 应采用格式化字符串作为值。我想在下面展示一个示例:

EXEC msdb.dbo.sp_send_dbmail  
    @profile_name = 'Mail Profile',
    @recipients = Right('domain/user@company.com',
                         CHARINDEX('/',reverse('domain/user@company.com'))-1),
    @body = 'TEST MESSAGE',
    @subject = 'Automated Success Message'

但是当我执行上述语句时,出现错误消息:关键字附近的语法不正确Right

标签: sqlsql-servertsql

解决方案


您不能将表达式作为参数传递给 am SP。您必须传递文字值或变量。您需要先声明一个变量,设置它的值,然后将其作为参数传递:

DECLARE @recipients nvarchar(255);
SET @recipients = RIGHT('domain/user@company.com', CHARINDEX('/', REVERSE('domain/user@company.com')) - 1);

EXEC msdb.dbo.sp_send_dbmail @profile_name = 'Mail Profile',
                             @recipients = @recipients,
                             @body = 'TEST MESSAGE',
                             @subject = 'Automated Success Message';

推荐阅读