Avatar billede sbjerre Nybegynder
30. januar 2006 - 09:57 Der er 6 kommentarer og
1 løsning

Brug af WHILE i SQL

Hej

Jeg skal gennemløbe alle rækker i en tabel og for hver række skal jeg kalde en stored procedure

Jeg har fundet noget a'la:

WHILE (SELECT id FROM TABLE) > 0
BEGIN
  EXEC StoredProcedure id
END

Er den helt gal... Det virker i hvert fald ikke.

Mvh sbjerre
Avatar billede Slettet bruger
30. januar 2006 - 10:02 #1
Lav dit udtræk først, og så en løkke som følgende:

while(total andre rækker fra udtræk >= nuværende gennemløb)

I slutnignen af din løkke lægger du så en værdi til "nuværende gennemløb".
Sådan ville jeg gribe det an.
Avatar billede dr_chaos Nybegynder
30. januar 2006 - 10:02 #2
den kører i et uendeligt loop.
brug noget med

DECLARE @EtID int
SET @EtID = 0
WHILE @EtID < (SELECT count(*) FROM TABLE)
BEGIN

  EXEC StoredProcedure @EtID
SET @EtID = @EtID +1
END
Avatar billede bromer Nybegynder
30. januar 2006 - 10:08 #3
Nu indsætter din StoredProcedure ikke noget i tabellen vel?
Avatar billede sbjerre Nybegynder
30. januar 2006 - 10:43 #4
Problemet opstår så når mit id ikke starter med 1 men i stedet med XXX og samtidigt har en masse huller pga. slettede rækker...
Avatar billede dr_chaos Nybegynder
30. januar 2006 - 10:47 #5
så skal du bruge noget i denne stil
DECLARE @EnCOunter int
DECLARE @EtID int
SET @EtID = 0
SET @EnCOunter = 0
WHILE @EnCOunter < (SELECT count(*) FROM TABLE)
BEGIN
SELECT @EtID=ID FROM TABLE WHERE ID > @EtID
  EXEC StoredProcedure @EtID
SET @EnCOunter = @EnCOunter+1
END
Avatar billede ldanielsen Nybegynder
30. januar 2006 - 10:47 #6
Du kan bruge det der kandes en CURSOR:

DECLARE curMinCursor CURSOR FOR
SELECT Col1, Col2 FROM TableName

OPEN curMinCursor

DECLARE @Col1 int, @Col2 int
FETCH NEXT FROM curMinCursor INTO @Col1, @Col2

WHILE @@FETCH_STATUS = 0
BEGIN

  /*Gør noget*/

  FETCH NEXT FROM curMinCursor INTO @Col1, @Col2
END

CLOSE curMinCursor
DEALLOCATE curMinCursor
Avatar billede sbjerre Nybegynder
11. oktober 2007 - 08:41 #7
lukket...
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester