*1. Имате нужда от SELECT и точка и запетая в дефиницията на курсора
*2. Можете да добавите FOR LOOP над курсора
Например:
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;
Можете, алтернативно, да избегнете изцяло изричната дефиниция на курсора, напр.:
FOR r1 IN (SELECT street1 FROM test_data) LOOP
... do your stuff with r1.street1
END LOOP;
*3. Вашите инструкции IF не могат да включват точка и запетая - напр.:
If
Instr(r1.street1, 'Cnr', 1) >= 1
Then
*4. [редактиране], така че искате да актуализирате вашата таблица, колони newstreetnumber
и newstreetname
- в който случай можете да направите нещо подобно:
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;
Обърнете внимание обаче, че това няма да работи добре за големи обеми и бих предпочел да направя всичко в един оператор UPDATE.