在 Oracle 中创建具有相同列的多个表
Creating multiple tables with identical columns in Oracle
我是 PL/SQL 的新手。是否可以在 while(或 for)循环内创建具有相同列但特定 table 名称的给定数量的 table 借助字符串连接设置单个 table 名称,例如No_1、No_2、等等?
我的尝试:
DECLARE
my_num integer := 1;
conc char(1);
BEGIN
WHILE my_num <= 5 LOOP
select to_char(my_num) into conc from dual;
Create table No_||conc (dists float);
my_num :=my_num+1;
END LOOP;
END;
它不起作用。如果有人能为我解释清楚,我将不胜感激。
您需要在 PL/SQL 块内对 运行 DDL 的 execute immediate
语句,如下所示:
DECLARE
my_num integer := 1;
conc char(1);
BEGIN
WHILE my_num <= 5 LOOP
execute immediate 'create table No_' || my_num || ' (dists float)';
my_num :=my_num+1;
END LOOP;
END;
但是,我想指出,Oracle 不鼓励使用 integer
和 float
(支持 number
),char
支持 varchar2
。而且我认为您的代码通常会这样写:
BEGIN
FOR my_num in 1..5 LOOP
execute immediate 'create table No_' || my_num || ' (dists number)';
END LOOP;
END;
我是 PL/SQL 的新手。是否可以在 while(或 for)循环内创建具有相同列但特定 table 名称的给定数量的 table 借助字符串连接设置单个 table 名称,例如No_1、No_2、等等?
我的尝试:
DECLARE
my_num integer := 1;
conc char(1);
BEGIN
WHILE my_num <= 5 LOOP
select to_char(my_num) into conc from dual;
Create table No_||conc (dists float);
my_num :=my_num+1;
END LOOP;
END;
它不起作用。如果有人能为我解释清楚,我将不胜感激。
您需要在 PL/SQL 块内对 运行 DDL 的 execute immediate
语句,如下所示:
DECLARE
my_num integer := 1;
conc char(1);
BEGIN
WHILE my_num <= 5 LOOP
execute immediate 'create table No_' || my_num || ' (dists float)';
my_num :=my_num+1;
END LOOP;
END;
但是,我想指出,Oracle 不鼓励使用 integer
和 float
(支持 number
),char
支持 varchar2
。而且我认为您的代码通常会这样写:
BEGIN
FOR my_num in 1..5 LOOP
execute immediate 'create table No_' || my_num || ' (dists number)';
END LOOP;
END;