Jeg skal til en Stored Procedure bruge de samme WHERE statements i flere SELECT kald, hvorfor jeg gerne vil definere disse 'en gang og bruge dem i alle kald.
Hvordan gør jeg det?
Når jeg bruger DECLARE og sætter @Variabel ind i SELECT får jeg en "An expression of non-boolean type specified in a context where a condition is expected, near ')'." fejl.
Fx:
DECLARE @SQLWhere nvarchar(500) SET @SQLWhere = '[User].Active = 1'
...
SELECT @UserCount=(SELECT COUNT(*) FROM [User] WHERE @SQLWhere)
Du kan ikke direkte eksekverer sql, hvor en del af SQL'en er en variable, men med Exec (execute), kan du bygge op en tekststreng, som eksekveres som en SQL. Du kunne ogås have den første del som en variable:
DECLARE @SQL nvarchar(max) DECLARE @SQLWhere nvarchar(500) SET @SQL = 'SELECT @UserCount=(SELECT COUNT(*) FROM [User] WHERE ' SET @SQLWhere = '[User].Active = 1'
Det virker ikke, jeg får fejlen "Msg 102, Level 15, State 1, Procedure User_Search, Line 40 Incorrect syntax near '+'." på linjen med "EXEC @SQLUserCount + @SQLWhere":
DECLARE @SQLWhere nvarchar(500) SET @SQLWhere = '[User].Active = 1)'
DECLARE @SQLUserCount varchar(max) SET @SQLUserCount = 'SELECT @UserCount=(SELECT COUNT(*) FROM [User] WHERE '
Beklager, jeg glemte at sette parantes rundt det som skal executes:
EXEC (@SQLUserCount + @SQLWhere)
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.