Impliziter cursor in PL/SQL

Hallo zusammen,

eigentlich habe ich eine recht einfache Frage.
Ich möchte in einem impliziten cursor das SELECT durch eine WHERE-Bedingung einschränken. Diese Bedingung möchte ich mir vorher erst zusammenbauen.

if (data_source_only is not null) then
only_condition := ’ WHERE datasource = ‚‘’ || data_source_only || ‚‘’’;
end if;

FOR lcursor IN (SELECT * FROM DQA_CHECK_DEFINITION || only_condition)

Allerdings bekomme ich immer die Fehlermeldung, dass das statement nicht korrekt abgeschlossen ist.
Ist diese Vorgehensweise überhaupt möglich?

Vielen Dank für Eure Hilfe!
Philipp

Hallo Philipp,

geht m.W nur mit explizitem Cursor

DECLARE

data_source_only varchar2(100);

TYPE typCursor IS REF CURSOR;

lCursor typCursor;

crCursor dual%ROWTYPE;

BEGIN

data_source_only:= ‚SELECT * FROM dual WHERE dummy = ‚‚X‘‘‘;

OPEN lCURSOR FOR (data_source_only);

LOOP

FETCH lCURSOR INTO crCursor;

EXIT WHEN lCursor%NOTFOUND;

dbms_output.put_line(crcursor.dummy);

END LOOP;

END;

VG

Andreas

Hallo,

hast du das Problem schon gelöst?

Du musst einen parametisierten Cursor definieren, damit sollte es klappen.

Hier ein Link mit einer kleinen Anleitung:

http://www.datenbank-plsql.de/sql.htm

Gruß
Matthias