OVH Cloud OVH Cloud

aide : Procédure stockée EXECUTE

1 réponse
Avatar
sebastien1101
Pour r=E9cup=E9r=E9 des nombre d'enregistrement (j'ai simplifi=E9 la
requete pour que vous m'aidiez)
EXECUTE ('select ' + @TotalRecords + ' =3D count(*) from clients')

et ca me renvoi null

alors que si je fais

SELECT @TotalRecords =3D count(*) from clients'
ca me renvoi 3

Et il me faut absolument le EXECUTE car dans ma version r=E9el je recoit
des param=E8tres

Merci pour l'aide

1 réponse

Avatar
Steve Kass
Sébastien,

Votre premier exemple ne fait que
EXECUTE(NULL), parce que @TotalRecords est nulle
avant, et le chaine SQL est 'select ' + NULL + '...', ce qui
est NULL.

Vous pouvez récupérer la valeur de count(*) avec
sp_executesql, en utilisant une paramètre OUTPUT:

create table clients (i int)
insert into clients values (10)
insert into clients values (13)
go

declare @TotalRecords int
exec sp_executesql
N'select @TotalRecords = count(*) from clients
where i > @param',
N'@param int, @TotalRecords int OUTPUT',
@TotalRecords = @TotalRecords OUTPUT,
@param = 11

select @TotalRecords
go

--Le meilleur serait de créer un procedure stocké:

create procedure p (
@i int,
@TR int OUTPUT
) as
select @TR = count(*) from clients where i > @i
go

declare @param int set @param = 11
declare @TotalRecords int

exec p @param, @TotalRecords OUTPUT
select @TotalRecords

-- drop table clients
-- drop proc p

-- Steve Kass
-- Drew University


wrote:

Pour récupéré des nombre d'enregistrement (j'ai simplifié la
requete pour que vous m'aidiez)
EXECUTE ('select ' + @TotalRecords + ' = count(*) from clients')

et ca me renvoi null

alors que si je fais

SELECT @TotalRecords = count(*) from clients'
ca me renvoi 3

Et il me faut absolument le EXECUTE car dans ma version réel je recoit
des paramètres

Merci pour l'aide