在 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 不鼓励使用 integerfloat(支持 number),char 支持 varchar2。而且我认为您的代码通常会这样写:

BEGIN
  FOR my_num in 1..5 LOOP
    execute immediate 'create table No_' || my_num || ' (dists number)';
  END LOOP;
END;