2016-05-06 5 views
0

Ich habe eine Funktion, die dynamische SQL-Abfrage sys_refcursor zurückgibt, so dass Spalten von diesem Cursor dynamisch zurückgegeben werden. Ich möchte, dass Cursor SQL zur Abfrage nach meiner FunktionErgebnissatz eines sys_refcursor auf PL/SQL

Select tryit('MyTable_Name',' condition = conditionParameter and condition2=Parameter2') retCursor 
from dual 

Es gibt einen Cursor auf PL/SQL SQL Windw als eine Spalte und eine Zeile ausgeführt wird. Nachdem Sie auf drei Punkte geklickt haben, wird Ergebnisergebnis zurückgegeben. Wie kann ich Resultset erhalten, ohne auf Punkte zu klicken?

Wenn ich die Funktion zu xmltype übergebe, indem ich ihre Spalten übergebe und als xmltable umsetze, zeigt sie resultset an, aber ich brauche die Spalten dynamisch nach übergebenen Parametern.

Select * from xmltable('/ROWSET/ROW' 
PASSING xmltype(tryit('MyTable_Name','condition = conditionParameter and condition2=Parameter2')) 
columns 
Col1 PATH 'Col1', 
Col2 PATH 'Col2', 
Col3 PATH 'Col3' , 
Col4 PATH 'Col4') 

Hinweis: Oracle 11g, PL/SQL Developer 8

+0

Ref-Cursor ist ein Zeiger, der an eine Clientanwendung übergeben wird. Die Anwendung ist verantwortlich für die Handhabung der Ergebnismenge. PL/SQL Developer ist ein Entwicklerwerkzeug (der Hinweis ist im Namen). Das Holen und Anzeigen des Ref-Cursors erfordert daher eine manuelle Aktion. – APC

+0

[benutzerdefinierte Pipeline-Funktion] (http://stackoverflow.com/questions/14155844/return-resultset-from-function) –

Antwort

0

In SQL Developer (und ich nehme an, es in PL/SQL Developer etwas ähnlich ist), brauchen Sie nicht die SQL-Abfrage die Funktion zu wickeln ; Stattdessen können Sie ein PL/SQL-Skript ausführen, das den Cursor ausgibt:

VARIABLE cur REFCURSOR; 

BEGIN 
    :cur := tryit(
      'MyTable_Name', 
      ' condition = conditionParameter and condition2=Parameter2' 
     ); 
END; 
/

PRINT cur;