Oracle Cursor spørgsmål
Hej,Jeg er ret ny i Oracle's verden og jeg kigger på Cursors nu. Jeg kan godt få det til at virke, men det give mig et sjovt resultat.
Jeg har tabellen "test" med 2 entries.
SELECT * FROM test; giver 2 rows, naturligvis.
Så laver jeg et lille script.
DECLARE
a VARCHAR(10);
b VARCHAR(10);
CURSOR cur IS
SELECT * FROM test;
BEGIN
OPEN cur;
FETCH CUR INTO a, b;
LOOP
-- dette loop outputter 3 rows, den sidste bliver printet 2 gange!
dbms_output.put_line('a = ' || a || ', b = ' || b);
EXIT WHEN cur%NOTFOUND;
END LOOP;
dbms_output.put_line(cur%ROWCOUNT); -- her outputtes 2
CLOSE cur;
END;
Hvis jeg har flg. i min tabel, test:
col1 col2
-------------------
1 | abc def
2 | ghi jkl
Så vil scriptet outputte:
a = abc, b = def
a = ghi, b = jkl
a = ghi, b = jkl <-- hvor kommer denne linie fra? hvad gør jeg galt i mit loop? Hvis det er korrekt virkemåde og jeg istedet skal tilføje noget, er det så muligt at kunne forklare hvorfor at den gør således?