存储过程中创建表

    技术2022-05-19  20

    create or replace package CSMP_LOGINUSERINFO Authid current_user is procedure PRO_ADD_LOGINUSERINFO (          memberaccount in  VARCHAR2,                    --成员账号        eccode        in  VARCHAR2,                    --集团客户编码        token         in  VARCHAR2,                    --令牌        logintime     in  VARCHAR2,                    --登录时间        logouttime    in  VARCHAR2 default null,       --退出时间        onlinetime    in  NUMBER   default null,       --在线时长        clienttype    in  VARCHAR2,                    --登录方式0表示wap客户端1表示web客户端2表示cs客户端        tableDate     in  VARCHAR2,                    --建表的时间        result        out VARCHAR2                     --处理结果 ); END CSMP_LOGINUSERINFO; / commit; create or replace package body CSMP_LOGINUSERINFO as procedure PRO_ADD_LOGINUSERINFO (          memberaccount in  VARCHAR2,                     --成员账号        eccode        in  VARCHAR2,                     --集团客户编码        token         in  VARCHAR2,                     --令牌        logintime     in  VARCHAR2,                     --登录时间        logouttime    in  VARCHAR2 default null,        --退出时间        onlinetime    in  NUMBER   default null,        --在线时长        clienttype    in  VARCHAR2,                     --登录方式0表示wap客户端1表示web客户端2表示cs客户端        tableDate     in  VARCHAR2,                     --建表的时间        result        out VARCHAR2                      --处理结果 ) as          totality      integer;                      --记录新表的数量              newTabName    varchar2(40);                 --新表名称              createTabStr  varchar(1000);                --创建新表的语句              insertStr     varchar(1000);                --插入记录的语句 begin      --默认成功操作码      result := 'true';      newTabName  := 'CSMP_LOGININFO_'||tableDate;      --查询今天用户登录信息表的总数量      select count(0) into totality from user_tables where table_name = newTabName;      if totality <= 0         then             createTabStr := 'create table '||newTabName||'             (                          ID                       VARCHAR2(20)                        not null,                          TOKEN                    VARCHAR2(64)                        not null,                          MEMBERACCOUNT            VARCHAR2(64)                        not null,                          ECCODE                   VARCHAR2(32)                        not null,                          LOGINTIME                DATE                                not null,                          LOGOUTTIME               DATE,                          ONLINETIME               NUMBER,                          CLIENTTYPE               VARCHAR2(32)                        not null,                          constraint PK_'||newTabName||' primary key (ID)             )';             execute immediate createTabStr;      end if;      insertStr := 'insert into '||newTabName||'                   (id,memberaccount,eccode,token,logintime,logouttime,onlinetime,clienttype)                          values                    (csmp_logininfo_seq.nextval,'''                    || memberaccount||''','''                    ||eccode||''','''                    ||token||''','                    ||'to_date('''||logintime||''',''yyyy-mm-dd hh24:mi:ss'')'||','                    ||'to_date('''||logouttime||''',''yyyy-mm-dd hh24:mi:ss'')'||','''                    ||onlinetime||''','''                    ||clienttype||''')';       execute immediate insertStr;       exception           when others THEN               result := 'false';       commit;     END PRO_ADD_LOGINUSERINFO; END CSMP_LOGINUSERINFO; / commit;


    最新回复(0)