2016-12-14 4 views
0

から列名をお読みください。 [OK]を、私はそれについての情報を提供しますUSER_TAB_COLUMNSという名前のテーブルがあることを知っているが、私は2または3レベルのネストされたクエリを持っていると私は列名がわからない場合。あるいは、私は単純にjoin文を使ってクエリを実行しています。カラム名を取得したいのです。どうやってするか?任意の理想?オラクルは、私がオラクルに列名を読んでどのように不思議select文

select * from person a 
join person_details b where a.person_id = b.person_id 

おかげ

+1

あなたが列名を知らない、なぜ私が聞いても?列名を含むスキーマの詳細を知らなくても、クエリの作成は難しくなります。 –

+0

私はJavaで抽象メソッドを書いて、クエリーを取得して "assoc map"などを返します。だから私はそれにどのような種類のクエリを渡すのか分からない。ですから、PL/SQLの開発者は、select文を渡すときにこの仕事をします。私はそれがどのようになっているのか考えが必要です。 – gogagubi

+1

ここを参照してください:Javaと.NETの両方でhttp://stackoverflow.com/questions/8739203/oracle-query-to-fetch-column-names –

答えて

0

私はのために行くだろう:

select 'select ' || LISTAGG(column_name , ',') within group (order by column_id) || ' from T1' 
    from user_tab_columns 
    where table_name = 'T1'; 

データベースからクエリを取得します。あなただけ使用できるマップ埋めるための型を持つ列を取得するには:

select column_name , data_type 
     from user_tab_columns 
     where table_name = 'T1'; 
0

を私はあなたがこれを見ていると仮定します。

DECLARE 

    sqlStr VARCHAR2(1000); 
    cur INTEGER; 
    columnCount INTEGER; 
    describeColumns DBMS_SQL.DESC_TAB2; 

BEGIN 
    sqlStr := 'SELECT a.*, b.*, SYSDATE as "Customized column name" 
       FROM person a JOIN person_details b 
       WHERE a.person_id = b.person_id'; 

    cur := DBMS_SQL.OPEN_CURSOR; 
    DBMS_SQL.PARSE(cur, sqlStr, DBMS_SQL.NATIVE); 
    DBMS_SQL.DESCRIBE_COLUMNS2(cur, columnCount, describeColumns);  
    FOR i IN 1..columnCount LOOP 
     DBMS_OUTPUT.PUT_LINE (describeColumns(i).COL_NAME); 
    END LOOP; 
    DBMS_SQL.CLOSE_CURSOR(cur); 

END;