Transact-SQL - SQL dynamique

Le
Patrick
Bonjour,

Je suis obligé d'utiliser du SQL dynamique pour créer le SQL d'une requête.
J'utilise donc une variable qui contient ce SQL.
La procédure stockée qui utilise ce SQL dynamique doit renvoyer une valeur
qui est calculée par celui-ci. Mais cela ne fonctionne jamais.

La procédure est dans ce genre :

DECLARE @total1 int

EXEC ('DECLARE @total2 int
@total2 = (SELECT SUM(' + @monChamp + ')
FROM maTable)')

@total1 = @total2

J'aimerais récupérer la valeur contenue dans la variable @total2.

Savez-vous pourquoi et comment faire pour pouvoir récupérer la valeur
calculée par le SQL ?

Merci pour votre aide.

--
Patrick
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Sylvain Lafontaine
Le #11852761
Exemple:

declare @i int
exec sp_executesql N'select @i = count(idecole) + 1 from ecoles', N'@i int
output', @i output

select @i


Faites bien attention de ne pas oublier les « N' », sinon cela ne
fonctionnera pas. Voir aussi
http://www.nigelrivett.net/SQLTsql/sp_executeSQL.html :

-- setting output parameter from dynamic stored procedure call

declare @OutputParameter varchar(100) ,
@error int ,
@SPName varchar(128) ,
@SPCall nvarchar(128) ,
@rc int
select @SPCall = 'exec ' + @SPName + ' @OutputParameter output'
exec @rc = sp_executesql @SPCall, N'@OutputParameter varchar(100) output',
@OutputParameter output
select @Error = @@error

--
Sylvain Lafontaine, ing.
MVP - Technologies Virtual-PC
E-mail: sylvain aei ca (fill the blanks, no spam please)


"Patrick" news:
Bonjour,

Je suis obligé d'utiliser du SQL dynamique pour créer le SQL d'une
requête.
J'utilise donc une variable qui contient ce SQL.
La procédure stockée qui utilise ce SQL dynamique doit renvoyer une valeur
qui est calculée par celui-ci. Mais cela ne fonctionne jamais.

La procédure est dans ce genre :

DECLARE @total1 int

EXEC ('DECLARE @total2 int
@total2 = (SELECT SUM(' + @monChamp + ')
FROM maTable)')

@total1 = @total2

J'aimerais récupérer la valeur contenue dans la variable @total2.

Savez-vous pourquoi et comment faire pour pouvoir récupérer la valeur
calculée par le SQL ?

Merci pour votre aide.

--
Patrick


Patrick
Le #11852711
Merci.

--
Patrick


"Sylvain Lafontaine" wrote:

Exemple:

declare @i int
exec sp_executesql N'select @i = count(idecole) + 1 from ecoles', N'@i int
output', @i output

select @i


Faites bien attention de ne pas oublier les « N' », sinon cela ne
fonctionnera pas. Voir aussi
http://www.nigelrivett.net/SQLTsql/sp_executeSQL.html :

-- setting output parameter from dynamic stored procedure call

declare @OutputParameter varchar(100) ,
@error int ,
@SPName varchar(128) ,
@SPCall nvarchar(128) ,
@rc int
select @SPCall = 'exec ' + @SPName + ' @OutputParameter output'
exec @rc = sp_executesql @SPCall, N'@OutputParameter varchar(100) output',
@OutputParameter output
select @Error = @@error

--
Sylvain Lafontaine, ing.
MVP - Technologies Virtual-PC
E-mail: sylvain aei ca (fill the blanks, no spam please)


"Patrick" news:
> Bonjour,
>
> Je suis obligé d'utiliser du SQL dynamique pour créer le SQL d'une
> requête.
> J'utilise donc une variable qui contient ce SQL.
> La procédure stockée qui utilise ce SQL dynamique doit renvoyer une valeur
> qui est calculée par celui-ci. Mais cela ne fonctionne jamais.
>
> La procédure est dans ce genre :
>
> DECLARE @total1 int
>
> EXEC ('DECLARE @total2 int
> @total2 = (SELECT SUM(' + @monChamp + ')
> FROM maTable)')
>
> @total1 = @total2
>
> J'aimerais récupérer la valeur contenue dans la variable @total2.
>
> Savez-vous pourquoi et comment faire pour pouvoir récupérer la valeur
> calculée par le SQL ?
>
> Merci pour votre aide.
>
> --
> Patrick





Publicité
Poster une réponse
Anonyme