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

Transact-SQL - SQL dynamique

2 réponses
Avatar
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

2 réponses

Avatar
Sylvain Lafontaine
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" wrote in message
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


Avatar
Patrick
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" wrote in message
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