选择临时表的列

时间:2017-04-10 06:52:40

标签: sql oracle ddl

对于如下创建的表,我们如何选择列,以便我们可以遍历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'

1 个答案:

答案 0 :(得分: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> 
  

“我已经尝试了这个,可能不是因为我在另一个存储过程中检查它”

似乎不太可能有所作为。有什么区别是 case 。我注意到您发布的查询使用小写:where table_name = 'temptable'。试试where table_name = upper('temptable'),看看是否有帮助。