• Oracle 存储过程创建表


    用存储过程创建数据表:

    创建时注意必须添加authid current_user ,如果创建的表已存在,存储过程继续执行,但如不不加此关键语句,存储过程将出现异常,

    这个语句相当于赋权限。

    创建语句如下:

    create or replace
    procedure sp_create_mnl(i_id varchar2) authid current_user  as 
      /*********************************
    名称:sp_create_mnl
    功能描述:创建模拟量历史数据存储表
    
    修订记录:
    版本号   编辑时间  编辑人  修改描述
    1.0.0    2012-9-20 wylaok  1.创建此存储过程
    1.0.1    2012-9-21 wylaok  2.修改表名称及变量名称,增加必要注释
    
    入参出参描述:
    i_id 测点编号
    **********************************/
          v_tablename varchar2(30);--表名
          v_flag number(10,0);
          v_sqlfalg varchar(200);
    begin 
      v_flag:=0;
          v_tablename:=CONCAT('MNL', UPPER(i_id));
          v_sqlfalg:='select count(*) from user_TABLES where table_name='''||v_tablename||'''';
          dbms_output.put_line(v_sqlfalg);
          execute immediate v_sqlfalg into v_flag;
          if v_flag=0 then  --如果没有这个表 则去创建
             begin 
      execute immediate 'create table '||v_tablename ||'
      ( DATETIME DATE,
      MIN00    FLOAT,
      AGV00    FLOAT,
      MAX00    FLOAT,
      MIN05    FLOAT,
      AVG05    FLOAT,
      MAX05    FLOAT,
      MIN10    FLOAT,
      AGV10    FLOAT,
      MAX10    FLOAT,
      MIN15    FLOAT,
      AGV15    FLOAT,
      MAX15    FLOAT,
      MIN20    FLOAT,
      AGV20    FLOAT,
      MAX20    FLOAT,
      MIN25    FLOAT,
      AGV25    FLOAT,
      MAX25    FLOAT,
      MIN30    FLOAT,
      AGV30    FLOAT,
      MAX30    FLOAT,
      MIN35    FLOAT,
      AGV35    FLOAT,
      MAX35    FLOAT,
      MIN40    FLOAT,
      AGV40    FLOAT,
      MAX40    FLOAT,
      MIN45    FLOAT,
      AGV45    FLOAT,
      MAX45    FLOAT,
      MIN50    FLOAT,
      AGV50    FLOAT,
      MAX50    FLOAT,
      MIN55    FLOAT,
      AGV55    FLOAT,
      MAX55    FLOAT,
      MINV     FLOAT,
      MAXV     FLOAT,
      AVGV     FLOAT,
      MAXTIME  DATE,
      MINTIME  DATE
      )
      tablespace WYG
      pctfree 10
      initrans 1
      maxtrans 255
      storage
      (
        initial 512K
        next 512K
        minextents 1
        maxextents unlimited
        pctincrease 0
      )';
      --    execute immediate sqlstr;
             end;
          end if;
          end;
    

    调用此存储过程:

    begin
      createmnl('mnl_14');
      end;

  • 相关阅读:
    网上找的一个读取wave文件的代码片段
    用c++简单实现智能指针(转)
    剖析ifstream打开含中文路径名文件失败的原因(转)
    我是一个程序员
    .NET简谈委“.NET技术”托链 狼人:
    Entity Framework “.NET技术”4.1 推荐英文教程 狼人:
    Azure和Bing Maps API示“.NET技术”例经验分享 狼人:
    .NET中的异步编程“.NET技术”:使用F#简化异步编程 狼人:
    C#类类型“.NET技术” 狼人:
    Silverlight 应“.NET技术”用整合 狼人:
  • 原文地址:https://www.cnblogs.com/wylaok/p/2693896.html
Copyright © 2020-2023  润新知