パラメータを受け取り、一部の受信者にメールを送信するストアドプロシージャを書いています。 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「+」付近の構文が正しくありません。