2017-04-10 105 views
0

對於如下創建的表,我們如何選擇列以便我們可以遍歷PLSQL中的列。選擇臨時表的列

CREATE GLOBAL TEMPORARY TABLE temptable 
    (column1 datatype [ NULL | NOT NULL ], 
     column2 datatype [ NULL | NOT NULL ], 
     ... 
     column_n datatype [ NULL | NOT NULL ] 
    ); 

有些事情像下面,但臨時表。

SELECT * 
    FROM all_tab_cols 
where table_name = 'temptable' 
    and user = 'user' 

回答

2

臨時表列也存儲在ALL_TAB_COLUMNS中。

SQL> select t.table_name, c.column_name, c.data_type 
    2 from all_tables t 
    3  join all_tab_cols c 
    4  on c.table_name = t.table_name 
    5 where t.temporary = 'Y' 
    6 and t.owner = user 
    7 order by c.column_id; 

TABLE_NAME COLUMN_NAM DATA_TYPE 
---------- ---------- ---------- 
GTT1  COL1  VARCHAR2 
GTT1  COL2  NUMBER 
GTT1  COL3  VARCHAR2 

SQL> 

「我已經嘗試過這一點,可能是它不存在,因爲我在另一個存儲過程檢查它」

這似乎不大可能會有所作爲。有什麼有所作爲是案例。我注意到您發佈的查詢使用小寫字母:where table_name = 'temptable'。嘗試where table_name = upper('temptable'),看看是否有幫助。

+0

我已經試過這個,可能是它不在那裏,因爲我在另一個存儲過程中檢查它,我在一個過程中傳遞臨時表名,我正在檢查所有這些。 – Thunder