*1. Du skal bruge et SELECT og et semikolon i markørdefinitionen
*2. Du kan tilføje en FOR LOOP over markøren
For eksempel:
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;
Du kan alternativt helt undgå den eksplicitte markørdefinition, f.eks.:
FOR r1 IN (SELECT street1 FROM test_data) LOOP
... do your stuff with r1.street1
END LOOP;
*3. Dine IF-udsagn kan ikke indeholde semikolon - f.eks.:
If
Instr(r1.street1, 'Cnr', 1) >= 1
Then
*4. [edit], så du vil opdatere din tabel, kolonnerne newstreetnumber
og newstreetname
- i så fald kunne du gøre noget som dette:
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;
Bemærk dog, at dette ikke vil fungere godt for store mængder, og jeg foretrækker at gøre det hele i én UPDATE-erklæring.