2016-03-27 3 views
0

Ich habe eine dynamische SQL-Abfrage, die in einer Zeichenfolge erstellt wird. Der Vorgang sollte einen 'REF CURSOR' zurückgeben. Wenn ich versuche, den Cursor für die Abfrage zu öffnen, erhalte ich den Fehler PLS-00455PLSQL - Cursor kann nicht in dynamischen SQL verwendet werden

Cursor Definition

CURSOR cu_SiteList IS 
    SELECT SEC_NN.SRV_ID 
     ,SEC_NN.SRV_NAME 
     ,SEC_NN.SRV_COMTYP_CODE 
    FROM SEC_NN 
     ,COM_SITE_STATE_T 
    WHERE SEC_NN.SRV_COMTYP_CODE <> 1 
    AND SEC_NN.SRV_ID = 2; 

    TYPE SITE_LIST_TYP IS REF CURSOR RETURN cu_SiteList%ROWTYPE; 

Hier ist die Abfrage:

p_SiteList SITE_LIST_TYP; 
     lv_QueryStr := ' SELECT SEC_NN.SRV_ID ' || 
         ' ,SEC_NN.SRV_NAME ' || 
         ' ,SEC_NN.SRV_COMTYP_CODE ' || 
        ' FROM SEC_NN_, ' || 
           ' COM_SITE_STATE_T ' || 
          ' WHERE SEC_NN.SRV_COMTYP_CODE <> 1 ' || 
           ' AND SEC_NN.SRV_MODE_CODE = 2' || 
           ' AND SEC_NN.SRV_ID = COM_SITE_STATE_T.SRV_ID'; 

OPEN p_SiteList FOR lv_QueryStr; 

Wie man sehen kann ich nur 3 Spalten von SEC_NN Tabelle verwenden, so einen Cursor erstellen, die eine ROWTYPE der ist Der gesamte Tisch funktioniert nicht für mich. Wie kann das überwunden werden? Vielen Dank im Voraus.

+0

‚Ich erhalte die Fehlermeldung, wenn ich versuche, öffne den Cursor '. ** Welcher Fehler? ** Bitte bearbeiten Sie Ihren Code, um den Code, der den Cursor öffnet, und die Fehlermeldung, die Sie erhalten, einzuschließen. –

+0

Mögliches Duplikat von [Warum können wir keinen starken ref-Cursor mit dynamischer SQL-Anweisung verwenden?] (Http://stackoverflow.com/questions/2783461/why-cant-we-use-strong-ref-cursor-with-dynamic -sql-statement) –

+0

@LukeWoodward, ich glaube nicht, ich sah diesen Beitrag früher, das ist die Art, wie mein Cursor konfiguriert ist. Aktualisierter Originalbeitrag –

Antwort

2

Aus den Kommentaren, die fix ist, den Cursor als ‚schwach‘ ref Cursor zu erklären, durch die Linie ersetzt

p_SiteList SITE_LIST_TYP; 

mit

p_SiteList SYS_REFCURSOR; 
Verwandte Themen