Ich habe eine ziemlich generische/dynamische Prozedur, wo ich den Tabellennamen als Parameter übergeben und Abfragen dynamisch mit EXECUTE IMMEDIATE ausführen. Ich muss einen Cursor durchlaufen und jeden Datensatz aktualisieren. Gibt es eine Möglichkeit, meinen Tabellennamen nicht hart codieren zu müssen?Dynamic SQL mit 'where current of'
habe ich versucht, diese aber es funktioniert nicht:
open cur for v_sql;
loop
fetch cur into v_recid;
EXIT WHEN cur%NOTFOUND;
EXECUTE IMMEDIATE 'update '||p_table||q'[ set status = 'I' where current of cur]';
end loop;
close cur;
Haben Sie erwogen, die 'ROWID' als Schlüssel für das Update zu verwenden? –
Was ist der Fehler, den Sie haben? Wenn Sie "current of" verwenden, muss Ihre dem Cursor zugeordnete Abfrage die Klausel "for update" enthalten. –