J'écris une procédure stockée qui acceptera un paramètre et enverra du courrier à certains destinataires. J'utilise la procédure stockée intégrée sql.
voici le code
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;
Je reçois une erreur dans le +
symbole. Si je supprime le +
symbole et exécution, la procédure est en cours d'exécution. Sinon, cela donne une erreur. Un peu d'aide s'il vous plaît.
J'essaie ceci sur une base de connaissances. N'hésitez donc pas à partager les inconvénients d'envoyer un mail comme celui-ci s'il y en a.
Je vous remercie.
Le msdb.dbo.sp_send_dbmail
procédure (ou autres procédures) n'accepte qu'un paramètre ou une valeur littérale.
Pensez à modifier l'exécution de sp_send_dbmail
pour ça:
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' ;
Un exemple avec une procédure stockée définie par l'utilisateur:
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';
Msg 102, niveau 15, état 1, ligne 46 Syntaxe incorrecte près de '+'.