Frage : Dynamischer SQL für genistete Cursor/Schleifen

Hallo, haben

I zwei Cursor, dass ich in meinem PL/SQL Verfahren verwende.  Für den genisteten Cursor muss ich es den Spaltennamen führen, um zu betrachten.  Z.B.

My erstes wählt Cursor 10 Spalten in Variablen vor; wir benennen sie:
v_col1, v_col2, v_col3, etc.

Then, für jede jener Variablen, benenne ich meinen genisteten Cursor, aber die Spalten, die ich im genisteten Cursor benutzte, basieren auf einer der oben genannten Variablen.  Z.B. für v_col1, möchte ich diesen Cursor durchführen:

select distnct col1, NTILE (10) vorbei (Auftrag durch desc col1) als DECILE_RANK von table1, in dem col1 nicht ungültiger Auftrag durch DECILE_RANK desc ist;

and für v_col2, möchte ich diesen Cursor durchführen:

select distnct col2, NTILE (10) vorbei (Auftrag durch desc col2) als DECILE_RANK von table1, in dem col2 nicht ungültiger Auftrag durch DECILE_RANK desc ist; ;

. .and so an.  So im Allgemeinen, ist der genistete Cursor im Wesentlichen der selbe, ausgenommen die auserwählte Aussage und wo Klausel gegründet auf jedem meines Hauptvariables.

Rather sich unterscheidet, als 10 eindeutige genistete Cursor haben, mich möchte den genisteten Cursor zu etwas Ähnliches machen und die Spaltennamen dynamisch führen:

select v_columnname, NTILE (10) vorbei (Auftrag durch v_columnname desc) als DECILE_RANK von table1, in dem v_columnname nicht ungültiger Auftrag durch DECILE_RANK desc ist;

Is dieses möglich?  Wenn ja könnte jemand mir irgendeinen Zeiger-/Beispielcode von, wie man bitte zur Verfügung stellen dies tut?

Thanks!

Antwort : Dynamischer SQL für genistete Cursor/Schleifen

1:
2:
3:
4:
5:
6:
erklären
 s_sql    varchar2 (200);
.....
 s_sql: = „auserwählt“ || v_columnname || „NTILE (10) vorbei (Auftrag durch“ || v_columnname || „desc) als DECILE_RANK von table1, wo“ || v_columnname || „nicht ist ungültiger Auftrag durch DECILE_RANK desc; “
 sofortig s_sql durchführen;
.....
Weitere Lösungen  
 
programming4us programming4us