*1. Du behöver ett SELECT och ett semikolon i markördefinitionen
*2. Du kan lägga till en FOR LOOP över markören
Till exempel:
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 undvika den explicita markördefinitionen helt, t.ex.:
FOR r1 IN (SELECT street1 FROM test_data) LOOP
... do your stuff with r1.street1
END LOOP;
*3. Dina IF-satser kan inte innehålla semikolon - t.ex.:
If
Instr(r1.street1, 'Cnr', 1) >= 1
Then
*4. [redigera] så att du vill uppdatera din tabell, kolumner newstreetnumber
och newstreetname
- i så fall kan du göra något så här:
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;
Observera dock att detta inte kommer att fungera bra för stora volymer, och jag föredrar att göra allt i en UPDATE-sats.