Précédent   Forum des professionnels en informatique > Bases de données > MS SQL-Server > Développement
Développement Forum d'entraide sur le Transact-SQL, le CLR, les procédures stockées, les triggers, les requêtes SQL
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 06/05/2011, 18h23   #1
Membre expérimenté
 
Avatar de strat0
 
Homme François Guillot
Développeur Web
Inscription : novembre 2003
Messages : 285
Détails du profil
Informations personnelles :
Nom : Homme François Guillot
Âge : 30
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : novembre 2003
Messages : 285
Points : 583
Points : 583
Par défaut Utilisation de XP_SPRINTF avec une fonction

Bonjour,

Histoire de ne pas mourir idiot, est-ce que quelqu'un saurait m'expliquer pourquoi ce code :
Code :
1
2
3
4
5
6
DECLARE @parameters VARCHAR(100);
EXEC XP_SPRINTF @parameters OUTPUT, 
    '/DatabaseName=%s',
    db_name()
 
PRINT @parameters
Me retourne le message :
Citation:
Incorrect syntax near ')'.
...au niveau de db_name(). C'est interdit d'appeler une fonction en paramètre d'une proc? Il faut forcément que je créé une variable?
strat0 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/05/2011, 22h55   #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
Sous SQL Server, tu ne peux faire appel à une fonction, pour passer un paramètre, même si le type de la fonction est compatible avec le type de du paramètre. Le prototype de la procédure attend une valeur et rien d'autre.
C'est vrai que la question mérite d'être posée et que cela ressemble à une limitation ou une petite faiblesse du compilateur T-SQL (?). mais ce n'est pas bloquant.
Le code ci-dessous marche :
Code :
1
2
3
4
5
6
DECLARE @parameters VARCHAR(100);
DECLARE @database_name sysname 
SET @database_name = db_name();   
 
EXEC dbO.XP_SPRINTF @parameters OUTPUT, '/DatabaseName=%s', @database_name; 
PRINT @parameters;
A+
hmira est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/05/2011, 11h15   #3
Membre expérimenté
 
Avatar de strat0
 
Homme François Guillot
Développeur Web
Inscription : novembre 2003
Messages : 285
Détails du profil
Informations personnelles :
Nom : Homme François Guillot
Âge : 30
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : novembre 2003
Messages : 285
Points : 583
Points : 583
Merci. C'est ce que je commençais sérieusement à soupçonner.

En fait j'ai une bonne quinzaine de paramètres, et ça rendait la chaîne de caractères concaténée assez peu lisible. Mais là du coup ça rend la fonction XP_SPRINTF peu utile à mon avis.
strat0 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



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


 
 
 
 
Partenaires

Hébergement Web