对于如下创建的表,我们如何选择列,以便我们可以遍历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'
答案 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')
,看看是否有帮助。