2017-07-05 3 views
0

blockiert ich einen Cursor innerhalb eines bestimmten Blockes verwenden, die dynamisch Abfrage mit WHERE Klausel immer Parameter enthält ...Innen Verwendung von Cursor deklariert außerhalb

Deshalb, wie einen Cursor zu verwenden, ohne in DECLARE Block zu deklarieren.

(Ich kann verschachtelte Cursor nicht verwenden - bin auf der Suche nach Beispielen).

+0

Nicht sicher, warum Sie einen Cursor an erster Stelle brauchen, können Sie etwas Code posten und erklären, was Sie erreichen möchten? –

+0

Geben Sie nach dem Hinzufügen von Code, wie Sudipta vorgeschlagen hat, bitte auch an, ob MySQL oder Oracle. Riesiger Unterschied was möglich ist und was nicht. – Solarflare

Antwort

0

Sie könnten einen Impliziten Cursor verwenden, der einen lokalen Parameter für Ihre Prozedur verwendet. So sieht es aus:

declare 
    v_parm varchar2(3) := 'Z'; 
begin 
-- FIRST LOOP will display all objects owned by Z 
    for x in (select * from all_objects where owner=v_parm) loop 
    dbms_output.put_line(x.object_name); 
    end loop; 
-- SECOND LOOP will display all objects owned by SYS until 100 is reached 
--  (that would be a huge bunch otherwise!) 
    v_parm := 'SYS'; 
    for x in (select * from all_objects where owner=v_parm and rowid < 100) loop 
    dbms_output.put_line(x.object_name); 
    end loop; 
end; 
/
Verwandte Themen