24. marts 2006 - 15:12Der er
8 kommentarer og 1 løsning
T-SQL spørgsmål
Hvis jeg har en query, der i min stored proc returnerer mig et antal poster, hvordan kan jeg løbe sådan igennem i min stored proc og smide en nøgle værdi over i en streng separeret med ';' fx?
Ok, sagen er at jeg har en transaktionel st. proc. som blive kaldt med et argument, der er en komma separeret streng af id'er (IdA).
Udover dette argument kaldes st. proc desuden med et andet id(IdB), som jeg skal bruge til at slå op i en anden tabel. Dette opslag i den anden tabel returnerer mig en række poster, som er een kolonne med en masse andre ID'er(IdC).
Nu kommer det egentlige.
For hver enkelt returværdi (IdC) fra opslaget skal jeg indsætte IdC i en tabel sammen med de antal kommasepareret id'er (IdA).
Alt dette i een transaktion.
Af en kollega har jeg fået at vide, at jeg skal smide streng id'erne splittet op en efter en og smide dem i en tmpTabelA. Dette er lykkedes.
Derefter skal jeg smide returvæærdierne fra opslaget i en anden tmpTabelB.
Nu har jeg to tmp tabeller, udfra jeg så burde kunne lave min INSERT INTO statement, uden behov for løkker.
som i virkeligheden ville være: INSERT INTO dbo.SchemaField (IdC_1,IdA_1) INSERT INTO dbo.SchemaField (IdC_1,IdA_2) INSERT INTO dbo.SchemaField (IdC_1,IdA_3)
I en løkke hvor IdC så i næste løkke ville være IdC_2 INSERT INTO dbo.SchemaField (IdC_2,IdA_1) INSERT INTO dbo.SchemaField (IdC_2,IdA_2) INSERT INTO dbo.SchemaField (IdC_2,IdA_3)
etc.
Jeg har fået at vide, at jeg kan spare løkken ved blot at skrive noget lignende:
INSERT INTO dbo.SchemaField (SELECT IDC FROM tmpTabelB, SELECT IDA FROM tmpTabelA)
Men dette virker ikke, måske gal syntaks.
Er jeg helt ved siden af, eller er der andre med bedre forslag?
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.