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 :

Passer une table en paramètre


Sujet :

MS SQL Server

  1. #1
    Membre confirmé

    Profil pro
    Inscrit en
    Mars 2002
    Messages
    1 184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 184
    Points : 619
    Points
    619
    Par défaut Passer une table en paramètre
    Bonjour,

    Je reprends une application dans laquelle une procédure stockée concatène tous les champs d'une table.

    Le problème est que le nombre de champs est important et que la table concernée n'a pas toujours le même nom même si elle toujours a la même structure.
    Je voudrais créer une fonction qui recevrait en paramètre le nom de la table à traiter et retournerait une chaine de caractère.

    J'arrive bien à recomposer le nom du champ en le préfixant du nom de la table reçu en paramètre mais je ne sais pas récupérer sa valeur.

    Merci d'avance pour votre aide

  2. #2
    Membre expérimenté

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2003
    Messages
    733
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2003
    Messages : 733
    Points : 1 668
    Points
    1 668
    Billets dans le blog
    8
    Par défaut
    Tu devrais être plus explicite en nous fournir un exemple concrêt même simple. A lecture de ton message, et si je comprend bien, tu devrais regarder du côté de l'utilisation du SQL dynamique sous SQL Server (sp_executesql)

    Ci-dessous un exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    -- Contenu de la table contacts : 
    SELECT * from Contacts 
    Id	Nom	Adresse
    1	Blaise Pascal	51 rue Cléopatre
    2	Jules César	21 Rue Emile Durkheim
    3	Catherine Deneuve	14 Rue Alain Delon
    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
    -- Recherche par le sql dynamique du nom du contact n° 3 
    DECLARE @SQLStmt NVARCHAR(4000), 
            @ParmDefinition NVARCHAR(500), 
            @IdContact INT, 
            @NomContact VARCHAR(50);         
     
    SET @SQLStmt = N'SELECT @ParamOut_NomContact = Nom  
                     FROM dbo.Contacts WHERE Id = @ParamIn_IdContact'; 
    SET @ParmDefinition = N'@ParamIn_IdContact INT, @ParamOut_NomContact VARCHAR(50) OUTPUT'; 
     
    SET @IdContact  = 3 
    EXECUTE sp_executesql  @SQLStmt, @ParmDefinition, 
                           @ParamIn_IdContact = @IdContact, 
                           @ParamOut_NomContact = @NomContact OUTPUT;  
     
    SELECT @NomContact As NomContact
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    -- Résultat : 
    NomContact
    Catherine Deneuve
    A+

  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 : 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,

    C'est un bon début mais c'est plus compliqué.

    Il vous faut connaître le type de données de la colonne pour les transtyper du type vers du nvarchar (sauf si vous n'avez aucune valeur littérale contenant d'autres caractères que ceux de l'alphabet latin, auquel cas le varchar suffit).

    Vous devrez donc recourir aux tables sys.tables, sys.columns et sys.types, utiliser la fonction CAST(), et la fonction CONVERT() pour les dates.

    Quel est le but de la manœuvre ?

    @++

Discussions similaires

  1. [MySQL-5.1] Passer le nom d'une table en paramètre d'une procédure
    Par boubanet dans le forum SQL Procédural
    Réponses: 5
    Dernier message: 08/06/2014, 18h06
  2. Passer une table en paramètre à l'aide d'un curseur
    Par lalyly dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 28/06/2006, 11h49
  3. Faire passer une table en paramètre pour une procedure
    Par samplaid dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 10/02/2006, 11h26
  4. [Conception] Passer une fonction en paramètre
    Par pejay dans le forum Langage
    Réponses: 9
    Dernier message: 09/12/2004, 13h58
  5. Passer une procédure en paramètre ?
    Par Cornell dans le forum Langage
    Réponses: 2
    Dernier message: 24/10/2003, 12h21

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