Sql-Server

儲存過程 sql server 中“+”附近的語法不正確

  • September 17, 2019

我正在編寫一個儲存過程,它將接受一個參數並將郵件發送給一些收件人。我正在使用 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;

我在+符號中遇到錯誤。如果我刪除該+符號並執行,則該過程將被執行。否則它給出錯誤。請幫忙。

我正在基於知識進行嘗試。因此,如果有的話,請隨時分享發送這樣的郵件的缺點。

謝謝你。

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' ;

使用者定義的儲存過程的範例:

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';

消息 102,級別 15,狀態 1,第 46 行“+”附近的語法不正確。

引用自:https://dba.stackexchange.com/questions/248947