*1. Je hebt een SELECT en een puntkomma nodig in de cursordefinitie
*2. U kunt een FOR-LUS over de cursor toevoegen
Bijvoorbeeld:
DECLARE
cursor c1 is
SELECT street1
from test_data;
r1 c1%ROWTYPE;
BEGIN
FOR r1 IN c1 LOOP
... do your stuff with r1.street1
END LOOP;
END;
U kunt de expliciete cursordefinitie ook helemaal vermijden, bijvoorbeeld:
FOR r1 IN (SELECT street1 FROM test_data) LOOP
... do your stuff with r1.street1
END LOOP;
*3. Uw IF-verklaringen mogen geen puntkomma bevatten, bijvoorbeeld:
If
Instr(r1.street1, 'Cnr', 1) >= 1
Then
*4. [edit] dus je wilt je tabel, kolommen newstreetnumber
. bijwerken en newstreetname
- in dat geval zou je zoiets als dit kunnen doen:
DECLARE
cursor c1 is
SELECT street1
from test_data
FOR UPDATE;
r1 c1%ROWTYPE;
BEGIN
FOR r1 IN c1 LOOP
... do your stuff with r1.street1
UPDATE test_data
SET newstreetnumber = ...
,newstreetname = ...
WHERE CURRENT OF c1;
END LOOP;
END;
Houd er echter rekening mee dat dit niet goed werkt voor grote volumes, en ik zou het liever allemaal in één UPDATE-statement doen.