【发布时间】:2020-01-14 15:05:38
【问题描述】:
我想创建一个过程来动态创建一个表,用户输入的列数从 1 到 n。我使用下面的脚本来动态创建表格 -
CREATE OR REPLACE PROCEDURE TABLES(COLS IN NUMBER)
AS
TABLE_STMT VARCHAR2(100);
TABLE_COLS VARCHAR2(100);
BEGIN
TABLE_STMT := 'CREATE TABLE TABLS(COL';
FOR I IN 1..COLS LOOP
IF I = COLS THEN
TABLE_STMT := TABLE_STMT || I || ' VARCHAR2(50)) ';
ELSE
TABLE_STMT := TABLE_STMT || I || ' VARCHAR2(50), COL';
END IF;
END LOOP;
EXECUTE IMMEDIATE TABLE_STMT;
DBMS_OUTPUT.PUT_LINE(TABLE_STMT);
END;
/
我有另一张桌子 -
VAL
A
B
C
D
E
F
G
H
需要在上表中创建的列之间拆分哪些行。如果用户输入 2 列,则输出应为 -
col1 | col2
A | B
C | D
E | F
G | H
如果用户输入 3 列,输出应该是 -
col1 | col2 | col3
A | B | C
D | E | F
G | H
我已成功创建表,但坚持在其中插入数据。任何帮助表示赞赏。
【问题讨论】: