我是PL / SQL的新手。是否有可能在一阵(或for)循环内创建给定数量的具有相同列但具有特定表名的表,并借助字符串连接来设置各个表名,例如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;
它不起作用。如果有人能对我说清楚,我将不胜感激。
您需要execute immediate
语句才能在PL / SQL块中运行DDL,如下所示:
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;