*1. Vous avez besoin d'un SELECT et d'un point-virgule dans la définition du curseur
*2. Vous pouvez ajouter une BOUCLE FOR sur le curseur
Par exemple :
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;
Vous pouvez également éviter complètement la définition explicite du curseur, par exemple :
FOR r1 IN (SELECT street1 FROM test_data) LOOP
... do your stuff with r1.street1
END LOOP;
*3. Vos instructions IF ne peuvent pas inclure de point-virgule ; par exemple :
If
Instr(r1.street1, 'Cnr', 1) >= 1
Then
*4. [edit] si vous voulez mettre à jour votre table, colonnes newstreetnumber
et newstreetname
- auquel cas vous pourriez faire quelque chose comme ceci :
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;
Notez, cependant, que cela ne fonctionnera pas bien pour les gros volumes, et je préférerais tout faire dans une seule instruction UPDATE.