*1. Você precisa de um SELECT e um ponto e vírgula na definição do cursor
*2. Você pode adicionar um FOR LOOP sobre o cursor
Por exemplo:
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;
Você pode, alternativamente, evitar totalmente a definição explícita do cursor, por exemplo:
FOR r1 IN (SELECT street1 FROM test_data) LOOP
... do your stuff with r1.street1
END LOOP;
*3. Suas instruções IF não podem incluir um ponto e vírgula - por exemplo:
If
Instr(r1.street1, 'Cnr', 1) >= 1
Then
*4. [edit] então você deseja atualizar sua tabela, colunas
newstreetnumber
e newstreetname
- nesse caso você poderia fazer algo assim: 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;
Observe, no entanto, que isso não funcionará bem para grandes volumes e eu prefiro fazer tudo em uma instrução UPDATE.