*1. Hai bisogno di un SELECT e un punto e virgola nella definizione del cursore
*2. Puoi aggiungere un FOR LOOP sopra il cursore
Ad esempio:
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;
In alternativa, puoi evitare del tutto la definizione esplicita del cursore, ad es.:
FOR r1 IN (SELECT street1 FROM test_data) LOOP
... do your stuff with r1.street1
END LOOP;
*3. Le tue istruzioni IF non possono includere un punto e virgola, ad esempio:
If
Instr(r1.street1, 'Cnr', 1) >= 1
Then
*4. [modifica] quindi vuoi aggiornare la tua tabella, colonne newstreetnumber
e newstreetname
- nel qual caso potresti fare qualcosa del genere:
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;
Nota, tuttavia, che questo non funzionerà bene per grandi volumi e preferirei fare tutto in un'unica istruzione UPDATE.