*1. Sie benötigen ein SELECT und ein Semikolon in der Cursordefinition
*2. Sie können eine FOR-SCHLEIFE über dem Cursor einfügen
Zum Beispiel:
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;
Alternativ können Sie auch ganz auf die explizite Cursor-Definition verzichten, z. B.:
FOR r1 IN (SELECT street1 FROM test_data) LOOP
... do your stuff with r1.street1
END LOOP;
*3. Ihre IF-Anweisungen dürfen kein Semikolon enthalten – z. B.:
If
Instr(r1.street1, 'Cnr', 1) >= 1
Then
*4. [bearbeiten] Sie möchten also Ihre Tabelle aktualisieren, Spalten newstreetnumber
und newstreetname
- in diesem Fall könnten Sie etwa so vorgehen:
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;
Beachten Sie jedoch, dass dies bei großen Volumes nicht gut funktioniert und ich es vorziehen würde, alles in einer UPDATE-Anweisung zu erledigen.