webForumDet fria alternativet

Must declare the scalar variable

1 svar · 384 visningar · startad av pulse

pulseMedlem sedan nov. 200384 inlägg
#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
LarsGMedlem sedan dec. 200012 465 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.

Genererad på 381 ms · cache AV · v20260730165559-full.f96bc7eb