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 :

Utilisation de StoredProcedure dans un select?


Sujet :

Développement SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Février 2003
    Messages
    2 194
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2003
    Messages : 2 194
    Par défaut Utilisation de StoredProcedure dans un select?
    Bonjour,

    J'ai un problème de conception.
    J'essaye de faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Select * 
    From MaTable
    Where TestSiValide(Pk,'MonNomDeTable')=1
    TestSiValide était une fonction mais qui fait appel à sp_executeSQL qui en fonction du paramètre "MonNomDeTable" allais recherche dans une table X ou Y
    hors on ne peut pas utilisé executeSQL dans une fonction....

    Il y a-t-il moyen de passer par une Stored_Procedure?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Procedure TestSiValide
    @Id as int,
    @TableName as varchar(128),
    @ReturnValue as int OUTPUT
    Ou je dois mettre mon testSiValide via des requêtes imbriqués?

  2. #2
    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,

    A priori je ne pense pas que l'on ait besoin de la procédure stockée système sp_executeSQL pour effectuer ce que vous voulez faire.
    Il est en revanche tout à fait vrai que dans une fonction définie par l'utilisateur, on ne peut pas effectuer d'appel de procédure, sauf s'il s'agit d'une procédure stockée étendue (les procédures stockées étendues étant dépréciées sous SQL Server 2008).

    Précisez votre besoin, nous trouverons très probablement une solution

    @++

  3. #3
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    22 002
    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 : 22 002
    Billets dans le blog
    6
    Par défaut
    TestSiValide était une fonction mais qui fait appel à sp_executeSQL qui en fonction du paramètre "MonNomDeTable" allais recherche dans une table X ou Y
    Il n'y a pas besoin de faire du SQL dynamique pour ce faire !

    Démonstration

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    CREATE TABLE T1 (C INT)
    CREATE TABLE T2 (C INT)
    CREATE TABLE T3 (C INT)
     
    INSERT INTO T1 VALUES (1)
    INSERT INTO T1 VALUES (2)
    INSERT INTO T1 VALUES (3)
     
    INSERT INTO T2 VALUES (2)
     
    INSERT INTO T3 VALUES (3)
    Jointure conditionnelle avec table 2 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    DECLARE @CONDITION INT
    SET @CONDITION = 2
     
    SELECT T1.*, COALESCE(T2.C, T3.C)
    FROM   T1
           LEFT OUTER JOIN T2 ON T1.C = T2.C AND @CONDITION = 2
           LEFT OUTER JOIN T3 ON T1.C = T3.C AND @CONDITION = 3
    WHERE  COALESCE(T2.C, T3.C) IS NOT NULL
    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/ * * * * *

Discussions similaires

  1. Utiliser deux sommes dans un select
    Par Jinkas dans le forum Développement
    Réponses: 7
    Dernier message: 31/07/2013, 12h09
  2. Utilisation de when dans un SELECT
    Par xavier0302 dans le forum Débutez
    Réponses: 2
    Dernier message: 23/05/2013, 17h15
  3. [MySQL] Utilisation de AS dans un SELECT
    Par voyageurdumonde dans le forum PHP & Base de données
    Réponses: 12
    Dernier message: 28/09/2011, 13h57
  4. Utilisation des alias dans le SELECT d'une requête
    Par olivier.x dans le forum Développement
    Réponses: 2
    Dernier message: 15/04/2010, 13h07
  5. [PL/SQL] utilisation de variables dans un select?
    Par Dr Kraft dans le forum SQL
    Réponses: 8
    Dernier message: 11/10/2006, 10h17

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