存储过程 sql server 中“+”附近的语法不正确

Wan*_*eet 3 sql-server query stored-procedures syntax

我正在编写一个存储过程,它将接受一个参数并向某些收件人发送邮件。我正在使用 sql 内置存储过程。

这是代码

create proc send_mail_admin(@usage_data as varchar(200))
as
begin

--get the list of mail admins from Users

declare @admin_list varchar(max);



set @admin_list = '';

--query to get all the admins

begin
    select 
        @admin_list = @admin_list + email + ';'
    from
        Users;
end

--call the mail stored procedure

exec msdb.dbo.sp_send_dbmail 
@profile_name='some_mail_profile',
@recipients=@admin_list,
@subject='Mail from sql server',
@body=@usage_data + ' end of data',
@importance='HIGH' ;



end;
Run Code Online (Sandbox Code Playgroud)

我在+符号中遇到错误。如果我删除+符号并执行,则该过程正在执行。否则它给出错误。请稍微帮助一下。

我正在基于知识尝试这个。因此,如果有的话,请随时分享发送这样的邮件的缺点。

谢谢你。

Ran*_*gen 9

msdb.dbo.sp_send_dbmail过程(或其它程序)仅接受一个参数或一个文字值。

考虑将执行更改为sp_send_dbmail

SET @usage_data += ' end of data'

exec msdb.dbo.sp_send_dbmail 
@profile_name='some_mail_profile',
@recipients=@admin_list,
@subject='Mail from sql server',
@body=@usage_data,
@importance='HIGH' ;
Run Code Online (Sandbox Code Playgroud)

用户定义存储过程的示例:

CREATE PROCEDURE dbo.bla(@dbname varchar(255))
as 
SELECT * 
FROM sys.databases  
WHERE NAME = @dbname;
GO

DECLARE @dbname varchar(200);
SET @dbname ='Half';

EXEC dbo.bla @dbname+'OtherHalf';
Run Code Online (Sandbox Code Playgroud)

消息 102,级别 15,状态 1,第 46 行“+”附近的语法不正确。