Questione : SQL dinamico per i cursori/cicli annidati

Ciao, il

I ha due cursori che sto utilizzando nella mia procedura di PL/SQL.  Per il cursore annidato, devo passargli il nome di colonna per esaminare.  Per esempio, il cursore del

My primo selezionerà 10 colonne nelle variabili; le denomineremo:
v_col1, v_col2, v_col3, etc.

Then, per ciascuna di quelle variabili, denomino il mio cursore annidato, ma le colonne che ho utilizzato nel cursore annidato saranno basate su una delle variabili di cui sopra.  Per esempio, per v_col1, voglio eseguire questo cursore: distnct col1, NTILE del

select (10) sopra (ordine da desc col1) come DECILE_RANK da table1 dove col1 non è ordine nullo dal desc di DECILE_RANK;

and per v_col2, voglio eseguire questo cursore: distnct col2, NTILE del

select (10) sopra (ordine da desc col2) come DECILE_RANK da table1 dove col2 non è ordine nullo dal desc di DECILE_RANK; ;

. .and così via.  Così fondamentale, il cursore annidato è essenzialmente lo stesso, tranne la dichiarazione e dove la clausola varierà basato su ciascuno del mio variables.

Rather di 10 cursori annidati distinti, io prescelti vorrebbe trasformare il cursore annidato in qualcosa di simile e passare dinamicamente i nomi di colonna: v_columnname del

select, NTILE (10) sopra (ordine dal desc del v_columnname) come DECILE_RANK da table1 dove il v_columnname non è ordine nullo dal desc di DECILE_RANK;

Is questo possibile?  In caso affermativo, potrebbe qualcuno prego fornirmi un certo codice campione/degli indicatori di come fare questo?

Thanks!
class= del

Risposta : SQL dinamico per i cursori/cicli annidati

1:
2:
3:
4:
5:
6:
dichiarare
 s_sql    varchar2 (200);
.....
 s_sql: = “prescelto„ || v_columnname || “NTILE (10) sopra (ordine da„ || v_columnname || “desc) come DECILE_RANK da table1 dove„ || v_columnname || “non è l'ordine nullo dal desc di DECILE_RANK; „
 eseguire lo s_sql immediato;
.....
Altre soluzioni  
 
programming4us programming4us