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 :

Executer des requetes sur le résultat d'une procedure stockée ?


Sujet :

MS SQL Server

  1. #1
    Membre émérite
    Avatar de Seb33300
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2007
    Messages
    1 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Thaïlande

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 563
    Points : 2 390
    Points
    2 390
    Par défaut Executer des requetes sur le résultat d'une procedure stockée ?
    Bonjour,

    J'ai une Procédure stocké qui me renvoi une série de valeurs.

    J'aimerais pouvoir traiter ces valeurs comme si c'était une table avec des requêtes comme par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT mon_champ FROM (Ma_procedure_stockee param1, param2) WHERE mon_champ='xx'
    Est ce possible ?

    Merci
    Zend Certified PHP Engineer

    « Crois-tu comprendre le monde juste en matant le 20H Ou connaître l'histoire en ayant lu que l'angle des vainqueurs ? » Keny Arkana

  2. #2
    Expert éminent sénior
    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 : 45
    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
    Points : 12 891
    Points
    12 891
    Par défaut
    Bonjour,

    Pour pouvoir récupérer le résultat de votre procédure stockée dans ce cas précis vous devez passer par une variable ou table temporaire au choix.

    Par exemple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    DECLARE @temp_result
    (
     colonne1 VARCHAR(50),
     colonne2 INT
    );
     
    INSERT INTO @temp_result (colonne1,colonne2)
    EXEC dbo.Ma_procedure_stockee @param1, @param2;
     
    SELECT * FROM @temp_result
    WHERE colonne1 = 'xx';
    Une autre possibilité serait de transformer votre procédure stockée en fonction de table.

    Pour récupérer votre résultat la syntaxe serait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    SELECT colonne1,colonne2 
    FROM dbo.Ma_fonction(@param1,@param2) WHERE colonne1 = 'xx';
    ++

  3. #3
    Membre émérite
    Avatar de Seb33300
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2007
    Messages
    1 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Thaïlande

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 563
    Points : 2 390
    Points
    2 390
    Par défaut
    En fait, l'application que j'utilise ne me permet pas de réaliser plusieurs instructions à la suite (Une application pour générer entre autre des rapports).

    C'est une requête SELECT et rien d'autre.

    Du coup, ça ne marche pas avec la 1ere solution.

    Pour la 2eme, j'ai bien essayé de convertir ma procédure en fonction mais SQL-SERVER ne veut pas "Impossible d'accéder aux tables temporaires au sein d'une fonction."


    Peut être existe t il une dernière solution ? Peut on par exemple appeler une procédure stockée dans une fonction et renvoyé le résultat de cette procédure ? Si oui comment ?

    Merci
    Zend Certified PHP Engineer

    « Crois-tu comprendre le monde juste en matant le 20H Ou connaître l'histoire en ayant lu que l'angle des vainqueurs ? » Keny Arkana

  4. #4
    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 : 42
    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
    Points : 12 371
    Points
    12 371
    Par défaut
    Bonjour,

    Voici ce qu'il n'est pas possible d'écrire dans une fonction.

    N'est-il pas plus simple d'écrire une procédure stockée vous retournant directement le résultat dont vous avez besoin ?

    @++

  5. #5
    Membre émérite
    Avatar de Seb33300
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2007
    Messages
    1 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Thaïlande

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 563
    Points : 2 390
    Points
    2 390
    Par défaut
    C'est actuellement ce que je fais.

    J'ai une procédure stocké qui me renvoi des données.

    Mais il semblerait que l'application ne les récupère pas si ça ne provient pas d'un select.
    Zend Certified PHP Engineer

    « Crois-tu comprendre le monde juste en matant le 20H Ou connaître l'histoire en ayant lu que l'angle des vainqueurs ? » Keny Arkana

  6. #6
    Membre émérite
    Avatar de Seb33300
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2007
    Messages
    1 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Thaïlande

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 563
    Points : 2 390
    Points
    2 390
    Par défaut
    msg à supprimer

    dsl

    (le sujet reste ouvert)
    Zend Certified PHP Engineer

    « Crois-tu comprendre le monde juste en matant le 20H Ou connaître l'histoire en ayant lu que l'angle des vainqueurs ? » Keny Arkana

  7. #7
    Membre émérite
    Avatar de Seb33300
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2007
    Messages
    1 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Thaïlande

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 563
    Points : 2 390
    Points
    2 390
    Par défaut
    Personne pour m'aider ?

    je tente certaines choses mais rien ne fonctionne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    CREATE   FUNCTION [dbo].[Ma_Fonction]  (@param1 as  varchar(10))
    RETURNS table as
    BEGIN 
     
    DECLARE @temp_result table
     
    set @temp_result = (exec Ma_Procedure @param1)
     
    return @temp_result
     
    END
    Zend Certified PHP Engineer

    « Crois-tu comprendre le monde juste en matant le 20H Ou connaître l'histoire en ayant lu que l'angle des vainqueurs ? » Keny Arkana

  8. #8
    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 : 42
    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
    Points : 12 371
    Points
    12 371
    Par défaut
    Mais il semblerait que l'application ne les récupère pas si ça ne provient pas d'un SELECT
    Si vous êtes sous SQL Server 2005, vous pouvez utiliser la clause OUTPUT sur une commande INSERT / UPDATE / DELETE.

    je tente certaines choses mais rien ne fonctionne
    C'est normal, vous ne pouvez pas appeler une procédure stockée dans une fonction.

    @++

  9. #9
    Membre émérite
    Avatar de Seb33300
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2007
    Messages
    1 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Thaïlande

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 563
    Points : 2 390
    Points
    2 390
    Par défaut
    Je suis sous SQL Server 2000.

    Hier j'ai réalisé quelques tests :

    - Si je récupère les donnée dans une table depuis une requête select, cela fonctionne, pas de problème.

    - Si j'utilise une procédure stockée, les données sont bien récupérée mais l'application ne semble pas arriver à les exploiter (du moins pour le module qui sert à générer les graphiques car le module qui sert à afficher le dataset m'affiche bien les données que la procédure stocké renvoie).

    D'ailleurs, n'existe t il pas un mot clé ou autre chose qui permet de spécifier qu'une procédure stockée renvoi des informations ? Car actuellement je ne fait qu'un simple Select a la fin de ma procédure stockée (sur les tables temporaires qui ont été générés)
    Zend Certified PHP Engineer

    « Crois-tu comprendre le monde juste en matant le 20H Ou connaître l'histoire en ayant lu que l'angle des vainqueurs ? » Keny Arkana

Discussions similaires

  1. [VxiR2] Faire une requete sur les résultats d'une première requete
    Par amy0o0 dans le forum Deski
    Réponses: 2
    Dernier message: 01/02/2011, 21h39
  2. Comment afficher le résultat d'une procedure stocké
    Par tarek_ep dans le forum Firebird
    Réponses: 3
    Dernier message: 24/12/2009, 12h37
  3. SELECT sur le résultat d'une procédure stockée
    Par sorcer1 dans le forum Langage SQL
    Réponses: 5
    Dernier message: 28/09/2007, 13h28
  4. executer des requetes de selection sur access à partie de VBA
    Par benpinta dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 09/08/2007, 14h04
  5. [Firebird] DELETE sur le résultat d'une requete d'un IBQUERY
    Par shashark dans le forum Bases de données
    Réponses: 3
    Dernier message: 25/06/2005, 18h17

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