繁体   English   中英

在oracle中我们可以从另一个表的列值名称创建具有列名称的表吗?

[英]In oracle can we create table having column name from another table column value name?

在oracle pl / sql中有什么方法可以创建一个新表,该表的列名来自其他表的列数据值。

例如:

TableA

column1
-----------
A
B
C
D

从这个新表出来作为

TABLE2

A B C D
- - - -

其中A,B,C,D充当表2的列名

提前致谢。

是的,使用PL / SQL构建动态查询,然后使用EXECUTE IMMEDIATE

Oracle安装程序

CREATE TABLE TableA ( column1 ) AS
SELECT 'A' FROM DUAL UNION ALL
SELECT 'B' FROM DUAL UNION ALL
SELECT 'C' FROM DUAL UNION ALL
SELECT 'D' FROM DUAL;

PL / SQL

DECLARE
  p_sql VARCHAR2(4000);
BEGIN
  SELECT 'CREATE TABLE TableB ('
         || LISTAGG(
              column1 || ' NUMBER',
              ','
            ) WITHIN GROUP ( ORDER BY ROWNUM )
         || ')'
  INTO   p_sql
  FROM   TableA;

  EXECUTE IMMEDIATE p_sql;
END;
/

输出

SELECT * FROM TableB;
A |  B |  C |  D
-: | -: | -: | -:

db <> 在这里拨弄

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM