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.
‚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. –
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) –
@LukeWoodward, ich glaube nicht, ich sah diesen Beitrag früher, das ist die Art, wie mein Cursor konfiguriert ist. Aktualisierter Originalbeitrag –