*1. Potrzebujesz SELECT i średnika w definicji kursora
*2. Możesz dodać pętlę FOR nad kursorem
Na przykład:
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;
Możesz alternatywnie całkowicie uniknąć wyraźnej definicji kursora, np.:
FOR r1 IN (SELECT street1 FROM test_data) LOOP
... do your stuff with r1.street1
END LOOP;
*3. Twoje wyciągi IF nie mogą zawierać średnika, np.:
If
Instr(r1.street1, 'Cnr', 1) >= 1
Then
*4. [edytuj], więc chcesz zaktualizować tabelę, kolumny newstreetnumber
i newstreetname
- w takim przypadku możesz zrobić coś takiego:
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;
Pamiętaj jednak, że nie będzie to działać dobrze w przypadku dużych wolumenów i wolałbym zrobić to wszystko w jednej instrukcji UPDATE.