2016-12-06 5 views
2

ORACLE: Jusqu'à présent, rien de ce que j'ai essayé n'a fonctionné. Je souhaite afficher sur l'écran les résultats de select * from my_table. Dans ce cas my_table = select table_name from all_tables where owner='ABC' and name like 'ABC%'. Le nom de la table serait un plus, mais le nom de la colonne est une nécessité. Je peux le faire en quelques secondes avec DB2, mais je ne peux pas traduire complètement pour Oracle.oracle select * du nom de la table des variables

Ma tentative:

variable refcur refcursor; 
    declare 
    my_select  varchar2(64); 
    cursor c_tables is 
     select table_name 
      from all_tables 
     where owner='ABC' and table_name like 'ABC%'; 
    begin 
    for x in c_tables 
     loop 
     dbms_output.put_line(x.table_name); 
     my_select := 'select * from ' || x.table_name; 
     open :refcur for my_select; 
     end loop; 

    exception 
    when no_data_found 
    then dbms_output.put_line('Nothing is found'); 
    end; 
/

Dans toutes mes tentatives, le meilleur que j'ai obtenu est table n'existe pas Merci

Répondre

0

Je ne sais pas comment vous êtes connecté, mais si vous Vous n'êtes PAS connecté en tant que ABC Vous devez inclure le schéma avec le nom de la table, par exemple

my_select := 'select * from ' || x.owner || '.' || x.table_name; 

De même, l'ouverture d'un curseur n'obtient aucun résultat ou affiche les données n'importe où. Vous devrez ajouter une logique pour extraire les données du curseur, afficher les données et fermer le curseur. Et comme le nom de la table n'est pas corrigé, la base de données ne peut pas dire à l'avance à quoi ressemble votre ligne. Vous devez donc vous familiariser avec le package DBMS_SQL, qui est utilisé pour gérer le SQL dynamique comme ceci.

Bonne chance.