oracle全量sql采集,关于数据采集的PL/SQL解决方法

当前位置:我的异常网» Oracle开发 » 关于数据采集的PL/SQL解决方法

关于数据采集的PL/SQL解决方法

www.myexceptions.net  网友分享于:2013-01-11  浏览:29次

关于数据采集的PL/SQL

功能 每小时向 表 BIDR查找当前时间前一个小时的数据 放入 windy_detail_yyyy_mm_dd 表中

下面是 BIDR的表结构

create table "BE0803"."BIDR"(

"ID" NUMBER(10) primary key,

"LAB_IP" VARCHAR2(255),

"LOGIN_DATE" TIMESTAMP(6),

"LOGIN_NAME" VARCHAR2(255),

"LOGIN_IP" VARCHAR2(255),

"TIME_DURATION" NUMBER(19),

"LOGINOUT_DATE" TIMESTAMP(6),

);

windy_detail_yyyy_mm_dd 和 bidr一样

下面是我写的 PROCEDURE

创建成功 运行也无报异常 就是找不到数据 不知道那里出错 各位帮我看看 (下面是测试代码所以时间字定义)

create or replace procedure bidr_to_detail( hh varchar2)

as

id bidr.ID%type;

login_name bidr.LOGIN_NAME%type;

login_ip bidr.LOGIN_IP%type;

login_date bidr.LOGIN_DATE%type;

loginout_date bidr.LOGINOUT_DATE%type;

lab_ip bidr.LAB_IP%type;

time_duration bidr.TIME_DURATION%type;

num number;

cid1 integer;

cid2 integer;

res1 integer;

res2 integer;

t1 varchar2(25);

t2 varchar2(25);

selectsql varchar2(255);

isnertsql varchar2(255);

d1 date;

d2 varchar(25);

begin

t1:='hh';

t2:='yyyy_mm_dd:hh';

cid1:=dbms_sql.open_cursor;

d1:=to_date(hh,'yyyy_mm_dd:hh');

selectsql:='select id ,login_ip,login_date,login_name,login_ip,time_duration,loginout_date from bidr where trunc(loginout_date,''hh'')=to_date('''||hh||''',''yyyy_mm_dd:hh'')';

dbms_sql.parse(cid1,selectsql,dbms_sql.native);

dbms_sql.define_column(cid1,1,id);

dbms_sql.define_column(cid1,2,lab_ip,255);

dbms_sql.define_column(cid1,3,login_date);

dbms_sql.define_column(cid1,4,login_name,255);

dbms_sql.define_column(cid1,5,login_ip,255);

dbms_sql.define_column(cid1,6,time_duration);

dbms_sql.define_column(cid1,7,loginout_date);

res1:=dbms_sql.execute(cid1);

cid2:=dbms_sql.open_cursor;

d2:=to_char(d1,'yyyy_mm_dd');

isnertsql:='insert into windy_detail_'||d2||' values(:id,:lab_ip,:login_date,:login_name,:login_ip,:time_duration,:loginout_date)';

dbms_sql.parse(cid2,isnertsql,dbms_sql.native);

loop

if (dbms_sql.fetch_rows(cid1))>0 then

dbms_sql.column_value(cid1,1,id);

dbms_sql.column_value(cid1,2,lab_ip);

dbms_sql.column_value(cid1,3,login_date);

dbms_sql.column_value(cid1,4,login_name);

dbms_sql.column_value(cid1,5,login_ip);

dbms_sql.column_value(cid1,6,time_duration);

dbms_sql.column_value(cid1,7,loginout_date);

dbms_sql.bind_variable(cid2,':id',id);

dbms_sql.bind_variable(cid2,':lab_ip',lab_ip);

dbms_sql.bind_variable(cid2,':login_date',login_date);

dbms_sql.bind_variable(cid2,':login_name',login_name);

dbms_sql.bind_variable(cid2,':login_ip',login_ip);

dbms_sql.bind_variable(cid2,':time_duration',time_duration);

dbms_sql.bind_variable(cid2,':loginout_date',loginout_date);

res2:=dbms_sql.execute(cid2);

else

exit;

end if;

end loop;

dbms_sql.close_cursor(cid1);

文章评论

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值