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
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
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
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
sebastien1101@hotmail.fr 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
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