15. februar 2010 - 15:15Der er
11 kommentarer og 1 løsning
Dynamisk feltnavn i INSERT values clause
Hej Eksperter!
Jeg har et lille problem vedr. dynamisk SQL Insert i min values clause. Jeg er sprit ny på MS SQL SERVER 2005 så bær over med mig hvis jeg er et fjols :-)
Jeg har en tabel med 2 felter. Jeg skal løbe tabellen igennem og for hvert felt i hver record skal jeg indsætte en række i en anden tabel. Jeg har prøvet med følgende:
DECLARE MY_CURSOR Cursor FOR select felt_1, felt_2 from #my_tab
declare @felt_1 smallmoney, @felt_2 smallmoney
open my_cursor
fetch next from my_cursor into @felt_1, @felt_2
while (@@fetch_status = 0) begin declare @sql nvarchar(800), @counter int, @main_counter int
set @main_counter = 1 print @felt_1 -- Giver mig indholdet af @felt_1 (502.43) while @main_counter < 3 begin declare @felt varchar(7) set @felt = '@felt_' + cast(@main_counter as varchar(2)) set @sql = 'insert into #tmp_tab(felt_value) values ('+@felt+')' print @sql -- Det er her mit problem ligger. -- Den giver mig ved første gennemløb "insert into #tmp_tab(felt_value) values (@felt_1)" -- Jeg vil gerne have "insert into #tmp_tab(felt_value) values (502.45)" --Hvordan refererer jeg til indholdet af variablen i stedet for variablen selv???????? set @main_counter = @main_counter+1 end fetch next from my_cursor into @felt_1, @felt_2 end close my_cursor deallocate my_cursor
Nogen der kan hjælpe?? Jeg er helt på bar bund synes jeg. Har også prøvet at google det uden held (ihvertfald ikke noget jeg kunne forstå :-)
Jeg skal jo indsætte en RECORD i den ene tabel for hvert FELT i den anden...Spørgsmålet går på hvordan man dynamisk kan referere til indholdet af mit variable feltnavn.
Se nu er vi ved at være der! :-) Jeg har rent faktisk 24 felter i tabellen så UNION synes jeg ikke rigtig var en option, men det er vel egentlig ok når jeg kan bygge den op dynamisk som du viser ovenfor. Så kan jeg jo bare loope rundt om den og bygge en SQL op med de 24 UNIONs dynamisk. Mange tak for hjælpen, send et svar så du kan få pointene.
Tak for hjælpen Janus, jeg prøver at holde mig fra cursors :-)
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.