分表时快速创建多个相同的表结构

假设我们要给test这张表做分表操作,test_00、test_01、test_63,则可以参考如下语句:

test表结构如下:

create table test(
    name varchar(255),
    age int(3),
    sex char(1),
    phonenumber char(11),
    email varchar(255)
);

一次性创建多张表:

DECLARE
  v_prefix VARCHAR2(20) := test_; -- 表名前缀
  v_suffix VARCHAR2(20); -- 表名后缀
BEGIN
  FOR i IN 1..64 LOOP
    IF i < 10 THEN -- 表名后缀小于10时需要在前面加0
      v_suffix := 0 || i;
    ELSE
      v_suffix := i;
    END IF;
    -- 创建表
    EXECUTE IMMEDIATE CREATE TABLE  || v_prefix || v_suffix ||  AS SELECT * FROM test WHERE 1=2;
  END LOOP;
END;
假设我们要给test这张表做分表操作,test_00、test_01、test_63,则可以参考如下语句: test表结构如下: create table test( name varchar(255), age int(3), sex char(1), phonenumber char(11), email varchar(255) ); 一次性创建多张表: DECLARE v_prefix VARCHAR2(20) := test_; -- 表名前缀 v_suffix VARCHAR2(20); -- 表名后缀 BEGIN FOR i IN 1..64 LOOP IF i < 10 THEN -- 表名后缀小于10时需要在前面加0 v_suffix := 0 || i; ELSE v_suffix := i; END IF; -- 创建表 EXECUTE IMMEDIATE CREATE TABLE || v_prefix || v_suffix || AS SELECT * FROM test WHERE 1=2; END LOOP; END;
经验分享 程序员 微信小程序 职场和发展