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 :

Appels de procedures stockées dans une proc stockée ?


Sujet :

MS SQL Server

  1. #1
    Membre du Club Avatar de Nadaa
    Inscrit en
    Septembre 2003
    Messages
    133
    Détails du profil
    Informations forums :
    Inscription : Septembre 2003
    Messages : 133
    Points : 68
    Points
    68
    Par défaut Appels de procedures stockées dans une proc stockée ?
    Bonjour tout le monde,

    J ai à mettre dans un rapport VB des composants qui resultent de 6 requettes differentes(6 proc stockées), mais je peux pas utiliser plusieurs source dans le rapport alors j ai pensé à utiliser une proc stockée qui appelles les 6 ps. Comment je peux le faire? comment faire utiliser une proc stockée dans une autre?

    merci par avance

  2. #2
    Membre habitué
    Inscrit en
    Mars 2002
    Messages
    116
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 116
    Points : 126
    Points
    126
    Par défaut
    tu fais EXEC dans ta procédure stockée pour pouvoir appelé d'autre procédures stockées, si tu as des paramètres, ne pas mettre de parenthèses du style :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    EXEC ta_proc_stock param1, parama2

  3. #3
    Membre du Club Avatar de Nadaa
    Inscrit en
    Septembre 2003
    Messages
    133
    Détails du profil
    Informations forums :
    Inscription : Septembre 2003
    Messages : 133
    Points : 68
    Points
    68
    Par défaut
    Re,

    de quelle type seront mes proc stockée que je dois donner comme param a ma proc stockée qui les appelle??

  4. #4
    Membre habitué
    Inscrit en
    Mars 2002
    Messages
    116
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 116
    Points : 126
    Points
    126
    Par défaut

    elles sont sensé te retourné quoi tes procédures stockées ?
    Elles font des quoi au juste ?

  5. #5
    Membre actif
    Avatar de MashiMaro
    Profil pro
    Inscrit en
    Février 2003
    Messages
    180
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 180
    Points : 213
    Points
    213
    Par défaut
    Citation Envoyé par Nadaa
    Re,

    de quelle type seront mes proc stockée que je dois donner comme param a ma proc stockée qui les appelle??
    Si je comprends bien la question, tu auras les six résultats à la suite comme si tu faisais les 6 select
    MashiMaro

    L'homme sage apprend de ses erreurs, l'homme très sage apprend des erreurs des autres.

  6. #6
    Membre du Club Avatar de Nadaa
    Inscrit en
    Septembre 2003
    Messages
    133
    Détails du profil
    Informations forums :
    Inscription : Septembre 2003
    Messages : 133
    Points : 68
    Points
    68
    Par défaut
    Tout à fait mashi,

    Les 6 proc stockée prenent le meme param en entrée mais retourne chacune 4 valeur (3 integer et une date)..
    Les 6 requettes sont du type : select....group by Month, order by user...exemple :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SET DATEFORMAT DMY SELECT SUBSTRING(CONVERT(char(10), EDIT.EDIT_IN_E, 103), 4, 7) AS MOIS, " _
                           & " EDITRICE_E AS USERNAME, SUM(EDIT.NBPAGE_E * ((-0.2) + 1.2)) As TOTAL " _
                           & " FROM EDIT LEFT JOIN EQUIV ON EDIT.IDREC = EQUIV.IDREC " _
                            & " WHERE (EDIT.EDIT_IN_E >= '" & TempDate1 & "') AND (EDIT.EDIT_IN_E <= GETDATE()) " _
                            & " GROUP BY SUBSTRING(CONVERT(char(10), EDIT.EDIT_IN_E, 103),4, 7), EDITRICE_E" _
                            & " ORDER BY SUBSTRING(CONVERT(char(10), EDIT.EDIT_IN_E, 103),4, 7), EDITRICE_E }  AS dbo_Req_Production COMPUTE dbo_Req_Production BY MOIS"

  7. #7
    Membre du Club Avatar de Nadaa
    Inscrit en
    Septembre 2003
    Messages
    133
    Détails du profil
    Informations forums :
    Inscription : Septembre 2003
    Messages : 133
    Points : 68
    Points
    68
    Par défaut
    oops, je m etais trompée de requette..en exempl e:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    SET DATEFORMAT DMY SELECT SUBSTRING(CONVERT(char(10), EDIT.EDIT_IN_E, 103), 4, 7) AS MOIS,                        & " EDITRICE_E AS USERNAME, SUM(EDIT.NBPAGE_E * ((-0.2) + 1.2)) As TOTAL 
       FROM EDIT LEFT JOIN EQUIV ON EDIT.IDREC = EQUIV.IDREC 
      WHERE (EDIT.EDIT_IN_E >= '" & TempDate1 & "') AND (EDIT.EDIT_IN_E <= GETDATE()) 
     GROUP BY SUBSTRING(CONVERT(char(10), EDIT.EDIT_IN_E, 103),4, 7), EDITRICE_E   
    ORDER BY SUBSTRING(CONVERT(char(10), EDIT.EDIT_IN_E, 103),4, 7), EDITRICE_E

  8. #8
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 69
    Points : 30
    Points
    30
    Par défaut
    Salut !

    Il semble que l'on ne puisse pas trop imbriquer les SP. Perso j'ai fait ca hier et je me suis fait jeter car sp_help_job contient sp_get_composite_job_info



    insert into ##sp_help_job_table exec sp_help_job

    Server: Msg 8164, Level 16, State 1, Procedure sp_get_composite_job_info, Line 67
    An INSERT EXEC statement cannot be nested.

  9. #9
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 69
    Points : 30
    Points
    30
    Par défaut
    ...Enfin si on utilise INSERT apparamment

  10. #10
    Rédacteur
    Avatar de WOLO Laurent
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Mars 2003
    Messages
    2 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Congo-Brazzaville

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2003
    Messages : 2 741
    Points : 4 414
    Points
    4 414
    Par défaut
    Il suffit d'appeler une sp qui appelle tes procedures et par la suite lancer la procedure globale. Un exemple valant mieux qu'un long (SQLPRO) discours :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    CREATE PROC SPL_NESTED_PROC
    AS
    EXEC [GSIM].[dbo].[spl_EnStock2p];
    EXEC [GSIM].[dbo].[spl_EnStock3p];
    EXEC [GSIM].[dbo].[spl_EnStock5p];
    Et désormais, il te suffira de faire :
    Le tour sera joué.

    N'oublie pas de marquer resolu ton poste.

    Découvrez la FAQ de MS SQL Server.
    La chance accorde ses faveurs aux esprits avertis !

  11. #11
    Membre du Club Avatar de Nadaa
    Inscrit en
    Septembre 2003
    Messages
    133
    Détails du profil
    Informations forums :
    Inscription : Septembre 2003
    Messages : 133
    Points : 68
    Points
    68
    Par défaut
    MERCI lAURENT,
    Je vais tester ca..merci infinment,

    Bonne journée

  12. #12
    Membre du Club
    Inscrit en
    Mai 2008
    Messages
    121
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 121
    Points : 55
    Points
    55
    Par défaut
    Bonjour,

    J'essaye de faire la même chose dans un projet SQL...

    Quand je fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    insert into #temp
    exec @return_status = dbo.DA @NumProduitTemp, @date_situation, @LangueTemp, @UserTemp, @DetailTemp, @DiffusionTemp, @NumModeleTemp
    J'ai l'erreur suivante qui apparaît lors du lancement de ma procédure :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Serveur : Msg 8164, Niveau  16, État 1, Procédure DA, Ligne 159
    An INSERT EXEC statement cannot be nested.
    Or ce que je ne comprend c'est que sur certaines procédures cela fonctionne nikel !!! Des procédures qui ont été crées avant mon arrivée fonctionnent sans pb !!!!

    J'ai bien déclaré ma table #temp avec un

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    create table #temp (
    DatSituation [datetime],
    	TexteTableau [varchar] (50),
    	TexteTableau2 [varchar] (50),
    	ValProduit [float],
    	ValNotation [varchar] (15),
    	ValNotation2 [varchar] (15),
    	OrdreAffichage [int],
    	Valide [bit],
    	UserValidation [varchar] (15),
    	DatValidation [datetime])
    Chaque champ correspond à un champ renvoyé par la procédure stockée DA.

    Y a t-il certaines propriétés à appliquer à la PS ??

    Merci d'avance.

  13. #13
    Membre du Club
    Inscrit en
    Mai 2008
    Messages
    121
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 121
    Points : 55
    Points
    55
    Par défaut
    Problème résolu.

    Le souci était le suivant:

    On ne peut pas appeler une procédure stockée de la façon suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    insert into #temp
    exec @return_status = PS arg1, arg2
    lorsque la procédure PS appelle elle même une procédure stockée de la façon suivante pour faire son SELECT :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    exec @return_status = PS2 arg1, arg2

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Recorset d'ne proc stock dans une proc stock
    Par topolino dans le forum Développement
    Réponses: 1
    Dernier message: 12/06/2009, 20h25
  2. Mettre le résultat d'une Proc Stock dans une variable
    Par zooffy dans le forum MS SQL Server
    Réponses: 7
    Dernier message: 18/06/2008, 11h20
  3. Réponses: 3
    Dernier message: 28/08/2007, 15h21
  4. Appel d'une procédure stockée dans une procédure stockée
    Par MrEddy dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 13/09/2006, 16h17
  5. Réponses: 3
    Dernier message: 17/01/2006, 17h12

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