Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Recupérer une valeur d'une requête dynamique

1 réponse
Avatar
news.oleane.com
Bonjour à tous,

J'ai une crée une requête dynamique du style :

EXEC ('SELECT ' + @momchamps + 'FROM ' + @table + 'WHERE monchamps=1')

Cela me donne un résultat unique ! Je souhaite réutiliser cette valeur dans
une autre requete et ceci tjs au sein de la même procedure, cela donne

EXEC @valeur = (procedure_toto')
SELECT * FROM AutreTabke WHERE Condition=@valeur

(pour info : procedure_toto étant une procedure stockée de l'instruction
précédent car si je fait :
EXEC @valeur = ('SELECT ' + @momchamps + 'FROM ' + @table + 'WHERE
monchamps=1') cela ne marche pas :( )


hors @valeur ne contient que les valeurs 0 (pour execution avec succès) ou 1
(pour execution raté) :(
Comment puisse-je faire ? Est-ce faisable ?

Merci pour vos réponse
Fabrice

1 réponse

Avatar
Philippe T [MS]
Bonjour,

Il est préférable de faire quelque chose du genre :

DECLARE @SQLString nvarchar(2000),
DECLARE @Value int,
DECLARE @ParmDefinition nvarchar(500)

SET @SQLString = 'SELECT @MyValueOUT = @momchamps FROM ' + @table + ' WHERE
monchamps=1'
SET @ParmDefinition = '@MyValueOUT int OUTPUT'
EXECUTE sp_executesql @SQLString, @ParmDefinition, @Value OUTPUT


----------------------------------------------------------------------
Philippe TROTIN - Microsoft Service France

"news.oleane.com" wrote in message
news:d8uobj$n76$
Bonjour à tous,

J'ai une crée une requête dynamique du style :

EXEC ('SELECT ' + @momchamps + 'FROM ' + @table + 'WHERE monchamps=1')

Cela me donne un résultat unique ! Je souhaite réutiliser cette valeur
dans une autre requete et ceci tjs au sein de la même procedure, cela
donne

EXEC @valeur = (procedure_toto')
SELECT * FROM AutreTabke WHERE Condition=@valeur

(pour info : procedure_toto étant une procedure stockée de l'instruction
précédent car si je fait :
EXEC @valeur = ('SELECT ' + @momchamps + 'FROM ' + @table + 'WHERE
monchamps=1') cela ne marche pas :( )


hors @valeur ne contient que les valeurs 0 (pour execution avec succès) ou
1 (pour execution raté) :(
Comment puisse-je faire ? Est-ce faisable ?

Merci pour vos réponse
Fabrice