Parametre pour Query sp_send_dbmail
* Bonjour, *
Il me semble avoir lu quelque part que le Query assigné a sp_Send_Dbmail n'autorisait pas de paramètres
Avant de me casser les dents là dessus pouvez-vous me le confirmer ?
N.B. : Accessoirement peut-on faire un query multiple (plusieurs requêtes distincte séparées par ';' ) dans sp_Send_DbMail ?
Merci de vos réponses
Essai sp_Send_Dbmail avec construction body
J'ai donc essayé de construire le body avec le résultat d'un select casté en VARCHAR avant l'appel de sp_Send_Dbmail
Ca donne le code ci-après, mais j'ai une message d'erreur
Citation:
The ORDER BY clause is invalid in views, inline functions, derived tables, subqueries,
Désolé de paraitre sans doute tres stupide mais rassurez-vous, je crois que j'apprends beaucoup de chose et j'essayerai de ne pas les oublier (j'aurais pu aussi optimiser mes assignation de @Chauffeur et @Name mais ce n'est pas la premiere préocupation ici )!
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68
| USE [Clark]
GO
/****** Object: StoredProcedure [dbo].[sp_NewMail2] Script Date: 03/13/2011 17:51:23 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
ALTER PROCEDURE [dbo].[sp_NewMailTst]
AS
BEGIN
DECLARE @str nvarchar(max);
DECLARE @Chauffeur INT;
DECLARE @Name VARCHAR(80);
DECLARE @Result VARCHAR(MAX);
SET @Chauffeur = 0
WHILE EXISTS (SELECT TOP 1 ChauffeurID FROM TotalChauffeur WHERE MailStatus=0)
BEGIN
SET @Chauffeur = (SELECT TOP 1 ChauffeurID FROM TotalChauffeur WHERE MailStatus=0);
SET @Name = 'Gedaan en leeg : ' + (SELECT TOP 1 ChauffeurName FROM TotalChauffeur WHERE MailStatus=0);
SET @Result=CAST((SELECT
ChauffeurID
,ChauffeurName
,Date
,tarra
,bruto
,(bruto-tarra) as Neto
FROM Clark.dbo.BakMove
where
ChauffeurID=CAST(@Chauffeur AS varchar(10))
AND TotalStatus<>1
union
SELECT
ChauffeurID
,'Total' as ChauffeurName
,Max(Date)
,sum(tarra)
,sum(bruto)
,(sum(bruto)-sum(tarra)) as Neto
FROM Clark.dbo.BakMove
where
ChauffeurID=CAST(@Chauffeur AS varchar(10))
AND TotalStatus<>1
group by ChauffeurID
order by Date) AS VARCHAR(MAX)) ;
-- SET @str='SELECT * FROM [Clark].[dbo].[TotalChauffeur]
-- WHERE ChauffeurID=' + CAST(@Chauffeur AS varchar(10));
EXEC msdb.dbo.sp_send_dbmail
@recipients = 'ogb@skynet.be;carol@recutex.be;christophe@recutex.be;frederik@recutex.be',
-- @query = @Result ,
@attach_query_result_as_file = 0,
@subject = @Name,
@Body = @Result;
UPDATE [Clark].[dbo].[TotalChauffeur]
SET MailStatus=1
WHERE ChauffeurID=@Chauffeur;
UPDATE
Clark.dbo.BakMove
SET TotalStatus=1
WHERE ChauffeurID = @Chauffeur;
END
END |