*1. Necesita un SELECCIONAR y un punto y coma en la definición del cursor
*2. Puedes agregar un FOR LOOP sobre el cursor
Por ejemplo:
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;
Como alternativa, puede evitar por completo la definición explícita del cursor, por ejemplo:
FOR r1 IN (SELECT street1 FROM test_data) LOOP
... do your stuff with r1.street1
END LOOP;
*3. Sus declaraciones IF no pueden incluir un punto y coma, por ejemplo:
If
Instr(r1.street1, 'Cnr', 1) >= 1
Then
*4. [editar] por lo que desea actualizar su tabla, columnas newstreetnumber
y newstreetname
- en cuyo caso podrías hacer algo como esto:
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;
Tenga en cuenta, sin embargo, que esto no funcionará bien para grandes volúmenes, y preferiría hacerlo todo en una declaración de ACTUALIZACIÓN.