天表向月表整合的存储过程(oracle)
来源:互联网 发布:英语句子分析器软件 编辑:程序博客网 时间:2024/05/16 23:59
create or replace procedure DayIntoMonth(today date,day integer,)
as
login_name z_day_1.login_name%TYPE;
login_ip z_day_1.login_ip%TYPE;
lab_ip z_day_1.lab_ip%TYPE;
day_cur integer;
month_cur integer;
dropI_cur integer;
month_all_cur integer;
yestoday date;
time_dur_all number;
time_dur_hour number;
ret integer;
begin
day_cur:=dbms_sql.open_cursor;
month_cur:=dbms_sql.open_cursor;
dropI_cur:=dbms_sql.open_cursor;
month_all_cur:=dbms_sql.open_cursor;
dbms_sql.parse(dropI_cur,'drop index z_i_month_'||day,dbms_sql.native);
ret:=dbms_sql.execute(dropI_cur);
yestoday:=today-1;
dbms_sql.parse(day_cur,'select login_name,login_ip,lab_ip,sum(time_duration) from z_day_'||day||' where logout_date between :lasthour_b and :today_b group by login_name,login_ip,lab_ip',dbms_sql.native);
dbms_sql.bind_variable(day_cur,':lasthour_b',yestoday);
dbms_sql.bind_variable(day_cur,':today_b',today);
dbms_sql.define_column(day_cur,1,login_name,10);
dbms_sql.define_column(day_cur,2,login_ip,32);
dbms_sql.define_column(day_cur,3,lab_ip,32);
dbms_sql.define_column(day_cur,4,time_dur_all);
ret:=dbms_sql.execute(day_cur);
loop
if dbms_sql.fetch_rows(day_cur)>0 then
dbms_sql.column_value(day_cur,1,login_name);
dbms_sql.column_value(day_cur,2,login_ip);
dbms_sql.column_value(day_cur,3,lab_ip);
dbms_sql.column_value(day_cur,4,time_dur_all);
dbms_sql.parse(month_cur,'insert into z_month_'||day||'(login_name,login_ip,lab_ip,logout_date,time_duration) values('||login_name||','||login_ip||','||lab_ip||',:todayb,'||time_dur_all||')',dbms_sql.native);
dbms_sql.bind_variable(month_cur,':todayb',today);
ret:=dbms_sql.execute(month_cur);
else
exit;
end if;
end loop;
dbms_sql.parse(dropI_cur,'create index z_i_month_'||day||' on z_month_'||day||'(login_name)',dbms_sql.native);
ret:=dbms_sql.execute(dropI_cur);
dbms_sql.parse(month_all_cur,'select lab_ip,round(sum(time_duration)/60) from z_day_'||day||' group by lab_ip',dbms_sql.native);
dbms_sql.define_column(month_all_cur,1,lab_ip,32);
dbms_sql.define_column(month_all_cur,2,time_dur_hour);
ret:=dbms_sql.execute(month_all_cur);
loop
if dbms_sql.fetch_rows(month_all_cur)>0 then
dbms_sql.column_value(month_all_cur,1,lab_ip);
dbms_sql.column_value(month_all_cur,2,time_dur_hour);
dbms_sql.parse(day_cur,'INSERT INTO t_month(logout_date,lab_ip,time_duration) VALUES(:todayb,'||lab_ip||','||time_dur_hour||')',dbms_sql.native);
dbms_sql.bind_variable(day_cur,':todayb',today);
ret:=dbms_sql.execute(day_cur);
else
exit;
end if;
end loop;
commit;
dbms_sql.close_cursor(dropI_cur);
dbms_sql.close_cursor(day_cur);
dbms_sql.close_cursor(month_cur);
dbms_sql.close_cursor(month_all_cur);
exception
when others then
rollback;
dbms_sql.parse(dropI_cur,'create index z_i_day'||day||' on z_day_'||day||'(login_name)',dbms_sql.native);
ret:=dbms_sql.execute(dropI_cur);
if dbms_sql.is_open(dropI_cur) then
dbms_sql.close_cursor(dropI_cur);
end if;
if dbms_sql.is_open(day_cur) then
dbms_sql.close_cursor(day_cur);
end if;
if dbms_sql.is_open(month_cur) then
dbms_sql.close_cursor(month_cur);
end if;
if dbms_sql.is_open(month_all_cur) then
dbms_sql.close_cursor(month_all_cur);
end if;
raise;
end DayIntoMonth;
- 天表向月表整合的存储过程(oracle)
- 每个月创建下一个月的表(存储过程)
- oracle中,使用存储过程带数组参数的形式向表中添加数据(存储过程,数组参数,序列,触发器,类型,循环)
- oracle存储过程 更新表的排序
- Oracle 创建表的存储过程
- oracle 存储过程返回 表
- oracle 存储过程 创建表
- ORACLE存储过程(二)之存储过程的调用
- Oracle的存储过程。
- Oracle的存储过程
- oracle的存储过程
- oracle的存储过程
- Oracle的存储过程
- oracle的存储过程
- Oracle的存储过程
- oracle的存储过程
- oracle的存储过程
- Oracle的存储过程
- Flex学习笔记 1
- C#中,输出二进制文件
- 世界上至少有10种东西是你不知道的 (转)
- ASP模板技术之KudzuASP简介
- 成长的寓言:做一棵永远成长的苹果树
- 天表向月表整合的存储过程(oracle)
- ArcEngine地图漫游的实现
- JAVA里浮点数从字符串解析丢失精度问题
- 关于数字显示的格式化
- 获取Builder C++或Dephi的消息框TMessageForm内容
- 批量建立索引
- vi常用命令总结
- sql具体年月日
- 单步跟踪调试