webForumDet fria alternativet

Must declare the scalar variable

Databaser & SQL

1 svar · 384 visningar · startad av pulse

Medlem sedan nov. 200373 inlägg
Frågan#1

När jag kör nedanstående får jag felet "Must declare the scalar variable "@var1". Nån som vet vad det beror på?

set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[admin3c]
	-- Add the parameters for the stored procedure here
	@tableName varchar(100),
	@authorityId varchar(50)

AS
BEGIN
	SET NOCOUNT ON;

Declare @SQL VarChar(2000),
@var1 varchar(50),
@var2 int,
@total int

SELECT @SQL = '
select	@var1 = name,
	@var2 = sum(age),
	@total = count(*)
from dbo.'+@tableName+' 
where authority='+@authorityId+'
group by name'
Exec ( @SQL)

select @total - @var2

END
Medlem sedan dec. 200012 464 inlägg
#2

Om du vill tilldela variabler med dynamisk sql så måste du använda proceduren sp_executesql

Varför använder du dynamisk SQL alls? Har du identiska tabeller fast med olika namn?

Jag skulle börja med att fundera över datamodellen.

127 ms totalt · 2 externa anrop · v20260731065814-full.2ae45ccc
0 ms — hämta statistik (cache)
124 ms — hämta tråd, inlägg och bilagor (db)