Précédent   Forum des professionnels en informatique > Bases de données > MS SQL-Server
MS SQL-Server Forum Microsoft SQL-Server. Avant de poster -> FAQ SQL-Server, Tutoriels SQL-Server
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 18/02/2011, 11h47   #1
Membre éclairé
 
Inscription : mars 2002
Messages : 667
Détails du profil
Informations forums :
Inscription : mars 2002
Messages : 667
Points : 312
Points : 312
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
Delphi-ne est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/02/2011, 12h30   #2
Membre éprouvé
 
Homme Hamid MIRA
Ingénieur développement logiciels
Inscription : septembre 2003
Messages : 177
Détails du profil
Informations personnelles :
Nom : Homme Hamid MIRA
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 : 177
Points : 413
Points : 413
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 :
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 :
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 :
1
2
3
-- Résultat : 
NomContact
Catherine Deneuve
A+
hmira est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/02/2011, 16h12   #3
Modérateur

 
Avatar de elsuket
 
Homme Nicolas Souquet
Administrateur de base de données
Inscription : janvier 2005
Messages : 4 667
Détails du profil
Informations personnelles :
Nom : Homme Nicolas Souquet
Âge : 30
Localisation : Thaïlande

Informations professionnelles :
Activité : Administrateur de base de données
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : janvier 2005
Messages : 4 667
Points : 8 715
Points : 8 715
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 ?

@++
__________________
En bases de données relationnelles SQL, il n'y a ni tableaux, ni enregistrements, ni champs: il y a des tables, des lignes et des colonnes.
Blog | Profil| Consulter ou télécharger les fichiers d'aide de SQL Server, des versions 2000 à 2012
elsuket est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 09h06.


 
 
 
 
Partenaires

Hébergement Web