Set @Count = 0 Set @BatchId0 = 'Batch0' Set @BatchId1 = 'Batch1' Set @BatchId2 = 'Batch2' Set @BatchId3 = 'Batch3' While (@Count <= 3) Set @Count = @Count + 1 Set @BatchId = (SELECT '@BatchId' + @Count) SELECT Locked FROM tblBatchQ WHERE BatchId = @BatchId
Jeg får igen fejl, det virker "bare" ikke. Så vidt jeg kan indeholder var @BatchId - @Batchidx. SQL opfatter bare ikke @Batchidx som en variabel men så en alm. string.
Prøvede lige denne her måde at bygge en SQL-streng op på, men det ser ud til at sp_executesql kører SQL'en i et lukket scope, således at den ikke kan se de variable du har defineret.
DECLARE @SQLString NVARCHAR(500) SET @SQLString = N'SELECT Locked FROM tblBatchQ WHERE BatchID = @BatchID' + @Count EXEC sp_executesql @SQLString
Kan du ikke lægge variablerne ind i en temporær tabel og derefter gennemløbe den med en cursor?
Jeg har prøvet dit forslag men uden held. Jeg får følgende fejl. "Must declare the variable '@BatchId1'". Jeg har lavet en "DECLARE @BatchId1 VarChar(15)"
Højst tænkeligt fordi den skal deklareres i den dynamiske del.
. . . DECLARE @SQL AS VARCHAR(500) Set @Count = @Count + 1 Set @BatchId = (SELECT '@BatchId' + @Count) SET @SQL = DECLARE @BatchId1 VarChar(15) ' SET @SQL = @SQL + 'SELECT Locked FROM tblBatchQ WHERE BatchId = '+ @BatchId +''
EXEC(@SQL)
Måske det virker... Men jeg er stadig nysgerrig efter at høre hvad det er du vil opnå :O)
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.