Schleife durch eine explizite cursor in Oracle
Wie kann ich eine Schleife durch einen impliziten cursor, die erstellt wird, zum Beispiel aus einer Abfrage?
Hier ist der Beispielcode:
SERVEROUTPUT on;
DECLARE
TYPE ref_cursor IS REF CURSOR;
cur REF_CURSOR;
BEGIN
OPEN cur FOR 'SELECT i.item_no,
i.item_descr
FROM ITEMS i
WHERE i.item_no in (1,2,3)';
... loop statement to print all item descriptions?
END;
- Das ist eine explizite cursor.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hier ist, wie es zu tun, so dass für die dynamische SQL. Können Sie bauen den query-string in code jedoch erforderlich (üblichen Warnungen über SQL-injection anwenden).
Ich bin nicht bis auf die 11g-änderungen, aber das sollte funktionieren:
IN
- Klausel nicht unterstützt, die mithilfe einer Variablen anstelle eines Komma-separierte Liste, in der alle SQL -, müssen Sie die Verwendung von dynamischem SQL erstellen Sie die Abfrage als string, bevor Sie ausgeführt wird. Auch für die Tabelle von Namen in einer Anweisung. Die alternative ist der Aufbau einer abgeleiteten Tabelle, die die Werte, die Sie möchten, so dass Sie beitreten können, gegen Sie, anstatt einIN
- Klausel.