IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

MS SQL Server Discussion :

Parametre pour Query sp_send_dbmail


Sujet :

MS SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre expérimenté
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Par défaut 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

  2. #2
    Expert confirmé
    Avatar de mikedavem
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2005
    Messages
    5 450
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Distribution

    Informations forums :
    Inscription : Août 2005
    Messages : 5 450
    Par défaut
    Il me semble avoir lu qq part que le Query assigné a sp_Send_Dbmail n'autorisait pas de parametres
    La requête est exécutée dans une session distincte de celle utilisée par la commande sp_send_dbmail. Il faudra donc jouer avec lorsque vous allez construire votre requête qui sera exécutée par sp_send_dbmail.

    N.B. : Accessoirement peut-on faire un query multiple (plusieurs requetes distincte séparées par ';' ) dans sp_Send_DbMail ?
    A priori il n'y a pas de souci à cela tant que la syntaxe générale soit correcte.

    ++

  3. #3
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Par défaut
    Bonjour,

    Je confirme pour l'exécution de plusieurs requêtes.

    @++

  4. #4
    Membre expérimenté
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Par défaut
    Merci Elsuket

    La requête est exécutée dans une session distincte de celle utilisée par la commande sp_send_dbmail. Il faudra donc jouer avec lorsque vous allez construire votre requête qui sera exécutée par sp_send_dbmail.
    Pour etre plus concret puis-je faire qq chose comme ceci ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    declare @Chauffeur int;
    set @Chauffeur=1;
     
    EXEC msdb.dbo.sp_send_dbmail
        @recipients = 'oxg@skynet.com;bartmissa@wareever.com;machin@recutex.com',
        @query = 'SELECT *  FROM [Clark].[dbo].[TotalChauffeur] 
        WHERE (CAST(DATE AS DATE)=CAST(GETDATE() AS DATE) OR MailStatus=0)
        AND ChauffeurID=@Chauffeur' ,
        @subject = 'Chauffeur Gedaan !',
        @attach_query_result_as_file = 0 ;
     
       UPDATE [Clark].[dbo].[TotalChauffeur]
       SET MailStatus=1
       WHERE CAST(DATE AS DATE)=CAST(GETDATE() AS DATE)
       OR MailStatus=0;
    (Note la presence du parametre @Chauffeur dans le query du mail)

    Sinon je suppose que je dois construire la chaine de requete avant de l'assigner !

  5. #5
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Par défaut
    Héhé non
    Pour cela il faut du SQL dynamique :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    DECLARE @sql nvarchar(max)
     
    SET	@sql = 'EXEC msdb.dbo.sp_send_dbmail @recipients = @recipients_IN'
    		+ ', @query = ''SELECT *  FROM Clark.dbo.TotalChauffeur WHERE (CAST(DATE AS date) = CAST(GETDATE() AS date) OR MailStatus = 0) AND ChauffeurID = ' + CAST(@Chauffeur AS varchar(10))
    		+ ''', @subject = @subject_IN, @attach_query_result_as_file = 0'
     
    EXEC	sp_executesql
    		@sql
    		, @params = '@recipients_IN varchar(128), @subject_IN nvarchar(255)'
    		, @recipients_IN = 'oxg@skynet.com;bartmissa@wareever.com;machin@recutex.com'
    		, @subject_IN = 'Chauffeur Gedaan !'
     
    UPDATE	Clark.dbo.TotalChauffeur
    SET	MailStatus = 1
    WHERE	CAST(DATE AS date) = CAST(GETDATE() AS date)
    OR	MailStatus = 0
    Regarde les remarques que j'ai posté dans ton sujet sur les procédures stockées dans le trigger

    @++

  6. #6
    Membre expérimenté
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Par défaut
    Merci Elsuket

    Oui je vois !
    J'avais cru m'en tirer avec un truc du genre, mais je ne fais que deplacer le problème

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     declare @str varchar(max);
     
     @str='SELECT *  FROM [Clark].[dbo].[TotalChauffeur] 
        WHERE (CAST(DATE AS DATE)=CAST(GETDATE() AS DATE) OR MailStatus=0)
        AND ChauffeurID=CAST(@Chauffeur as varchar)';
     
    EXEC msdb.dbo.sp_send_dbmail
        @recipients = 'oxg@skynet.com;bartmissa@wareever.com;machin@recutex.com',
        @query = @str ,
        @subject = 'Chauffeur Gedaan !',
        @attach_query_result_as_file = 0 ;
     
       UPDATE [Clark].[dbo].[TotalChauffeur]
       SET MailStatus=1
       WHERE CAST(DATE AS DATE)=CAST(GETDATE() AS DATE)
       OR MailStatus=0;

Discussions similaires

  1. xsl:for-each avec un parametre pour select
    Par arnog dans le forum XSL/XSLT/XPATH
    Réponses: 7
    Dernier message: 26/08/2008, 13h09
  2. Paramètre pour spécifier répertoire décompression avec tar
    Par snoop dans le forum Shell et commandes GNU
    Réponses: 7
    Dernier message: 05/06/2006, 11h00
  3. Réponses: 2
    Dernier message: 14/03/2005, 19h55
  4. Demande d'aide pour query difficile
    Par ericjean514 dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 22/02/2005, 18h52
  5. [novice]parametre pour dll
    Par tixu dans le forum C++
    Réponses: 4
    Dernier message: 12/11/2004, 14h32

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo