oracle删除定义变量,Oracle存储过程,临时表的创建、删除,变量的定义和使用

create or replace procedure Test_GetOaUserInfo  as

--authid current_user操作当前存储过程的当前用户,否则提示权限不足,但是这样存储过程这能执行一次

--,或者GRANT CREATE ANY TABLE TO any users;

timePoint  Date;

tabCstr varchar2(1000);     --创建表的字符串

varNum number(1) default 0;   --定义统计记录变量默认为0

tabDstr varchar2(500);      --存数据的字符串

tabData varchar2(500);      -- 存数据的字符串

maxRow number;

begin

--抓取截止日期

select  max(last_date) into timePoint from basedb_users;

--存取表的记录数

select count(*) into varNum from user_tables where table_name='BASEDB_USERS_TEMP_TB';

if timePoint is null then

begin

timePoint:=sysdate;

end;

end if;

dbms_output.put_line(to_char(timePoint,'YYYY-mm-dd hh24:mm:ss')); --set serveroutput on

dbms_output.put_line(varNum);

--创建临时表

if varNum < to_number(1) then   --如果没有数据表创建临时表

--dbms_output.put_line('执行了啊');

tabCstr := 'create global temporary table BASEDB_USERS_TEMP_TB(

ID           INTEGER not null,

LOGINID      VARCHAR2(15),

FIRSTNAME    VARCHAR2(30),

LASTNAME     VARCHAR2(60),

FULLNAME     VARCHAR2(100),

SEX          CHAR(1),

JOBTITLE     INTEGER,

SUBCOMPANYID INTEGER,

DEPARTMENTID INTEGER,

MANAGEID     INTEGER,

WORKCODE     VARCHAR2(15),

LAST_DATE    DATE,

ACTION_SIGN  CHAR(1),

STATUS       CHAR(1),

PASSWORD     VARCHAR2(50)

)ON COMMIT PRESERVE ROWS '; --ON COMMIT PRESERVE ROWS 会话级临时表 ,ON COMMIT delete ROWS 事务级临时表

execute immediate tabCstr;--执行DDL语句

end if;

--导入数据到临时表中

begin

tabData := 'insert into BASEDB_USERS_TEMP_TB(id,fullname)

select to_number(u.id) id,u.fullname from FMASTER.basedb_users@linkoa u where u.last_date

execute immediate tabData using timePoint;

commit;

end;

dbms_output.put_line(tabData);

select max(rownum) into maxRow from FMASTER.basedb_users@linkoa u where u.last_date < timePoint;  --查询中最大记录数      commit;      dbms_output.put_line('记录数'||maxRow);          --删除临时表     --tabDstr := 'truncate table BASEDB_USERS_TEMP_TB ';     --execute immediate tabDstr;      --tabDstr := 'drop table BASEDB_USERS_TEMP_TB ';     --execute immediate tabDstr;      --  commit;   end Test_GetOaUserInfo;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值