Exécution de requête SQL et résultat

Mitch986 Messages postés 23 Date d'inscription lundi 5 novembre 2007 Statut Membre Dernière intervention 3 juin 2010 - 1 juin 2010 à 17:58
Mitch986 Messages postés 23 Date d'inscription lundi 5 novembre 2007 Statut Membre Dernière intervention 3 juin 2010 - 2 juin 2010 à 13:46
Salut,

J'ai crée une procédure stockée entièrement crée à partir de variables. Celle-ci a la forme suivante :

SET @SQL 'SELECT ' + @FieldName + ' AS value FROM ' + @FlowName + ' WHERE ' + @IDName + ' ''' + @IDValue + '''';

Je souhaiterai donc envoyer comme retour la valeur du champ qui est retourné (il n'y en a toujours un seul). Comment puis-je donc lancer cette requête et avoir le bon résultat??

Merci d'avance pour votre aide!

9 réponses

cs_Tolliap Messages postés 60 Date d'inscription lundi 4 décembre 2006 Statut Membre Dernière intervention 11 janvier 2013
2 juin 2010 à 01:15
Slt,

DECLARE @SQL varchar(1000) // Attention a la taille!!!
SET @SQL 'SELECT TOP 1 ' + @FieldName + ' AS value FROM ' + @FlowName + ' WHERE ' + @IDName + ' ''' + @IDValue + ''''; 

EXEC (@SQL)

Qui ne tente rien, n'a rien
0
cs_Tolliap Messages postés 60 Date d'inscription lundi 4 décembre 2006 Statut Membre Dernière intervention 11 janvier 2013
2 juin 2010 à 01:29
Re,
Je vient de re-lire attentivement ce que tu dit, et je sais pas si c'est ce que j'ai écrit que tu veut faire ou bien
enregistrer ta valeur de retour dans @SQL???
donc si c'est cela voici le code :
DECLARE @SQL varchar(1000) // Attention a la taille!!!
declare  @table(value varchar(255))
insert into @table
 exec ('SELECT TOP 1 ' + @FieldName + ' AS value FROM ' + @FlowName + ' WHERE ' + @IDName + ' = ''' + @IDValue + ''''); 
set @SQL = (select top 1 value from @table)
select @SQL 



En espérant t'avoir aidé :)


Qui ne tente rien, n'a rien
0
Mitch986 Messages postés 23 Date d'inscription lundi 5 novembre 2007 Statut Membre Dernière intervention 3 juin 2010
2 juin 2010 à 09:27
Re,

Je vois où tu veux en venir mais ton code ne passe pas sur mon SQL Server Management Studio...

C'est le @table qui n'est pas reconnue comme valide... Une autre suggestion?
0
cs_Tolliap Messages postés 60 Date d'inscription lundi 4 décembre 2006 Statut Membre Dernière intervention 11 janvier 2013
2 juin 2010 à 09:34
re,
Autant pour moi :
DECLARE @SQL varchar(1000) // Attention a la taille!!!
declare @table table (value varchar(255))
insert into @table
 exec ('SELECT TOP 1 ' + @FieldName + ' AS value FROM ' + @FlowName + ' WHERE ' + @IDName + ' = ''' + @IDValue + ''''); 
set @SQL = (select top 1 value from @table)
select @SQL 


Qui ne tente rien, n'a rien
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Mitch986 Messages postés 23 Date d'inscription lundi 5 novembre 2007 Statut Membre Dernière intervention 3 juin 2010
2 juin 2010 à 10:18
Effectivement, ça marche impeccable!!

Maintenant, plus dur... :D

Je voudrais renvoyer depuis une procédure stockée l'ensemble d'une table, du genre:

SET @SQL = 'SELECT * FROM ' + @TableName
SELECT (@SQL)

Mais ça ne marche pas... :(
0
cs_Tolliap Messages postés 60 Date d'inscription lundi 4 décembre 2006 Statut Membre Dernière intervention 11 janvier 2013
2 juin 2010 à 10:57
SET @SQL = 'SELECT * FROM ' + @TableName 
EXEC(@SQL) 



Qui ne tente rien, n'a rien
0
Mitch986 Messages postés 23 Date d'inscription lundi 5 novembre 2007 Statut Membre Dernière intervention 3 juin 2010
2 juin 2010 à 11:05
C'est ce que j'avais fait au début, mais j'obtiens comme résultat un entier (int), qui vaut 0...

Comment je peux récupérer l'ensemble de la table??
0
cs_Tolliap Messages postés 60 Date d'inscription lundi 4 décembre 2006 Statut Membre Dernière intervention 11 janvier 2013
2 juin 2010 à 11:34
Re,

Je vient de faire cette requete sur ma base est tous fonctionne
declare @table varchar(200)
set @table = 'maTable'
declare @SQL varchar(200)
set @SQL = 'SELECT * FROM '+@table

exec (@SQL)



Qui ne tente rien, n'a rien
0
Mitch986 Messages postés 23 Date d'inscription lundi 5 novembre 2007 Statut Membre Dernière intervention 3 juin 2010
2 juin 2010 à 13:46
Oui, mais le pb vient du fait que le nom de la table doit provenir d'un paramètre d'entrée... Dans l'exemple, tu le déclares comme une valeur "codée en dur" dans la requête.
0
Rejoignez-nous