Oracle使用存储过程新建表

Oracle使用存储过程新建表

一只正在努力进步的小菜鸟


需求 : 由于日志表数据量过大 , 公司要求将每天的数据数据按照当天的时间来存放到当天的表中

例如 : 原本存在一张Button点击记录表( BUTTON_CLICK_LOG ) , 其中每天都会记录大量的点击记录 , 从而导致表的数据量越来越大 , 所以要将每天记录的数据根据点击的时间来存放到一张新表中 , 表名后面以点击的日期结尾( 如 : BUTTON_CLICK_LOG_20170410 )

思路 : 使用存储过程来完成新建表 , 使用定时器来完成表的创建工作

在网上查询了一些使用存储过程来建表的资料 , 在这里记录一下 , 方便以后查询 .

CREATE OR REPLACE PROCEDURE TEMP_EMP_CREATETAB
AUTHID current_user
AS
  tabName VARCHAR2(200);
  tabCount NUMBER;
BEGIN
  tabName := 'TEMP_EMP_DATA_' || TO_CHAR(sysdate, 'yyyyMMdd');
  SELECT COUNT(1) INTO tabCount FROM user_tables WHERE table_name = tabName;
  -- dbms_output.put_line(tabName);
  -- dbms_output.put_line(tabCount);
  if tabCount = 0 then
    EXECUTE IMMEDIATE 'create table '||tabName||'
    (        
      EMPNO        NUMBER(4, 0) NOT NULL,        
      ENAME        VARCHAR2(10),        
      JOB          VARCHAR2(9),        
      MGR          NUMBER(4, 0),        
      HIREDATE     DATE,        
      SAL          NUMBER(7, 2),        
      COMM         NUMBER(7, 2),        
      DEPT_NO      NUMBER(2, 0)      
    )';
  end if;
END TEMP_EMP_CREATETAB;

示意图

为了看的更直观一些 , 创建时间增加了 时 分 秒

Oracle使用存储过程新建表_第1张图片

Oracle使用存储过程新建表_第2张图片

测试的同时也出现了一些问题

Oracle使用存储过程新建表_第3张图片

可以看到 , 为了看的更清晰一些 , 我在年月日和时分秒中间加入了下划线 , 这样是可以成功执行的 , 但是加入中划线就会出错 , 我也不太清楚是什么问题 , 在这里求教 .

你可能感兴趣的:(Oracle)