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

Développement SQL Server Discussion :

Utiliser le résultat d'une Stored Proc dans une CTE [2008R2]


Sujet :

Développement SQL Server

  1. #1
    Futur Membre du Club
    Inscrit en
    Décembre 2005
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 13
    Points : 7
    Points
    7
    Par défaut Utiliser le résultat d'une Stored Proc dans une CTE
    Bonjour,

    J'essaye, en vain, d'utliser le résultat d'une stored Proc dans une CTE. Pouvez vous me confirmer que ce n'est pas possible ?

    Par exemple,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     
    WITH CTE AS (
    EXEC MASP param1, Param2
    )
     
    SELECT * FROM CTE
    En simplifiant bien sûr: dans la réalité, j'aurais voulu utiliser le résultat pour faire d'autres calculs et croiser d'autres SP.

    Merci,
    Ängeljo

  2. #2
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 761
    Points : 52 547
    Points
    52 547
    Billets dans le blog
    5
    Par défaut
    Une requête ne peut contenir d'appel à procédure. En effet une procédure peut faire des transaction (INSERT, UPDATE, DELETE). Si elle était encapsulée dans un SELECT vous vous retrouveriez potentiellement avec une mise à jour alors que vous croyez ne faire que de la lecture ! Ce serait totalement incohérent...

    Si vous voulez récupérer la sortie d'un dataset résultant de l'exécution d'une procédure, dans une table, vous pouvez le faire en 2 temps :
    1) création d'une table (en "dur", temporaire ou variable table)
    2) insertion dans cette table via la commande : INSERT INTO MaTable (liste colonne) EXEC maproc...

    EXEMPLE :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    DECLARE @T TABLE 
    (LCK_ID         INT IDENTITY PRIMARY KEY,
     session_id     INT,
     database_id    SMALLINT,
     object_id      INT,
     index_id       INT,
     type           NVARCHAR(128),
     resource       NVARCHAR(256),
     mode           CHAR(16),
     status         VARCHAR(16));
     
    INSERT INTO @T (session_id, database_id, object_id, index_id, "type", "resource", mode, "status")
    EXEC sp_lock;
    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  3. #3
    Futur Membre du Club
    Inscrit en
    Décembre 2005
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 13
    Points : 7
    Points
    7
    Par défaut Merci
    Merci pour votre réponse. Je vais donc appliquer cela.

  4. #4
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Points : 13 092
    Points
    13 092
    Par défaut
    Bonjour

    Cela dit, vous faites peut-être fausse route...

    Que fait votre procédure stockée ?

    Si par exemple elle ne fait qu'un simple SELECT, vous pourriez avantageusement la remplacer par une fonction table. Alors, vous pourriez l'utiliser directement dans vos requêtes.

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

Discussions similaires

  1. [AC-2007] Utilisation du résultat de la ligne TOTAL dans une formule
    Par BR4562 dans le forum Access
    Réponses: 3
    Dernier message: 05/04/2014, 23h48
  2. Réponses: 1
    Dernier message: 12/12/2011, 10h07
  3. Réponses: 6
    Dernier message: 13/11/2009, 16h06
  4. Comment obtenir la date dans une store proc?
    Par Dnx dans le forum Langage SQL
    Réponses: 4
    Dernier message: 17/10/2005, 17h31
  5. Réponses: 15
    Dernier message: 26/03/2004, 17h53

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