2016-12-06 10 views
2

オラクル:これまでのところ私が試したことはありませんでした。私はselect * from my_tableの結果を画面に表示したいと思います。この場合、my_table = select table_name from all_tables where owner='ABC' and name like 'ABC%'です。テーブル名はプラスになりますが、カラム名は必要です。私はDB2でこれを数秒で行うことができますが、Oracleの場合はそれほど翻訳できません。oracle select *可変テーブル名

私の試み: 私の試みの全てにおいて

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; 
/

、私が得ている最高のは、私はあなたがログオンしているのか分からない おかげ

答えて

0

存在しないテーブルですが、あなたの場合ABCとしてログオンしていない場合は、テーブル名とともにスキーマを含める必要があります。

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

また、カーソルを開くと、そこから何もフェッチされず、どこにでもデータが表示されません。ロジックを追加して、カーソルからデータをフェッチし、データを表示し、カーソルを閉じる必要があります。また、テーブル名が固定されていないため、DBMS_SQLパッケージに慣れておく必要があります。このような動的SQLを処理するために使用されます。

幸運のベスト。

関連する問題