![存储过程入门实例_第1页](http://file3.renrendoc.com/fileroot_temp3/2022-1/19/0cbadb53-7eab-45e6-9ae5-6225ece1191d/0cbadb53-7eab-45e6-9ae5-6225ece1191d1.gif)
![存储过程入门实例_第2页](http://file3.renrendoc.com/fileroot_temp3/2022-1/19/0cbadb53-7eab-45e6-9ae5-6225ece1191d/0cbadb53-7eab-45e6-9ae5-6225ece1191d2.gif)
![存储过程入门实例_第3页](http://file3.renrendoc.com/fileroot_temp3/2022-1/19/0cbadb53-7eab-45e6-9ae5-6225ece1191d/0cbadb53-7eab-45e6-9ae5-6225ece1191d3.gif)
![存储过程入门实例_第4页](http://file3.renrendoc.com/fileroot_temp3/2022-1/19/0cbadb53-7eab-45e6-9ae5-6225ece1191d/0cbadb53-7eab-45e6-9ae5-6225ece1191d4.gif)
![存储过程入门实例_第5页](http://file3.renrendoc.com/fileroot_temp3/2022-1/19/0cbadb53-7eab-45e6-9ae5-6225ece1191d/0cbadb53-7eab-45e6-9ae5-6225ece1191d5.gif)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、存储过程备忘1 存储过程入门:-本例的作用:将一个变量赋值,再输出到屏幕(红字为必须结构)create or replace procedure TEST is v_details number(8); begin v_details :=1; dbms_output.put_line('stn是:'|v_details);exception when others thendbms_output.put_line('其他异常出现!');end TEST;2 两张汇总表的存储过程create or replace procedure WLRC_T_SUM is
2、begin-以下过程为删除两张汇总表中 当天之前已做过的统计数据delete from t_bnds_in_out_sum where to_char(s_date,'yyyy-mm-dd') = to_char(sysdate,'yyyy-mm-dd'); delete from t_bnds_org_sum where to_char(s_date,'yyyy-mm-dd') = to_char(sysdate,'yyyy-mm-dd');-插入两张汇总表:将细目表的当日数据汇总,按站名、日期、上下行将数据分别相加。 inse
3、rt into T_BNDS_IN_OUT_SUM select stn_code, s_date, train_dir, in_adm, out_adm, sum(total_cars) totalcar, sum(e_cars) ecar, sum(l_cars) lcar, sum(l_af_cars) lafcar, sum(l_no_stn_cars) lnostncar, sum(af_d_cars) afdcar, sum(af_ad_cars) afadcar, sum(af_z_cars) afzcar, sum(af_fz_cars) affzcar, sum(af_sz_
4、cars) afszcar FROM T_BNDS_IN_OUT_DETAIL WHERE to_char(s_date,'yyyy-mm-dd') = to_char(sysdate,'yyyy-mm-dd') GROUP BY stn_code, s_date, train_dir, in_adm, out_adm; insert into T_BNDS_ORG_SUM select stn_code, s_date, train_dir, in_adm, out_adm, org_adm,dest_adm, sum(l_cars) lcar, sum(l_
5、af_cars) lafcar, sum(af_d_cars) afdcar, sum(af_ad_cars) afadcar, sum(af_z_cars) afzcar, sum(af_fz_cars) affzcar, sum(af_sz_cars) afszcar FROM T_BNDS_ORG_DEST_DETAIL WHERE to_char(s_date,'yyyy-mm-dd') = to_char(sysdate,'yyyy-mm-dd') GROUP BY stn_code, s_date, train_dir, in_adm, out_ad
6、m,org_adm,dest_adm;-提交以前执行的过程。注意:重要! 否则直接rollback,不插入数据。 commit;-异常处理:exception when no_data_found thendbms_output.put_line('出现异常,无数据!');when others thenrollback;dbms_output.put_line('其他异常出现!');end WLRC_T_SUM;3 存储过程中的循环实例本例作用说明:存在细目表DETAILS,字段为:站代码stn统计日期sdate车次上下行标志traindir(0/1)接入局交
7、出局车总数total违流数afcar1BFF2010-12-1298765431NF4852AYF2010-12-1223456780FP5263AYF2010-12-1212345670FP5054AYF2010-12-1234567891PF5145BFF2010-12-1245678901NF49106BFF2010-12-1232112341NF522将细目表中内容按站名,统计日期,上下行进行累加统计,得出某站某天某个方向通过的车的总数及违流数。统计表sums,字段为:站代码stn统计日期sdate上下行标志traindir(0/1)车总数total违流数afcar运行以下三种循环的结
8、果sums均为:站代码stn统计日期sdate上下行标志traindir(0/1)车总数total违流数afcar1AYF2010-12-120102112BFF2010-12-121149173AYF2010-12-1215143.1 一般循环-创建ORACLE存储过程TEST,定义变量v_sqlstrcreate or replace procedure TEST is v_sqlstr varchar(1000);-定义游标c,指向从细目表中取出的按站名、日期、上下行标志汇总的车数 cursor c is SELECT stn, sdate, traindir, sum(total) t
9、otal, sum(afcar) afcar FROM DETAILS GROUP BY STN,SDATE,TRAINDIR;-定义结构体变量v_details,类型与c游标中的变量们相同 v_details c%rowtype;-开始处理过程:将本日之前的汇总记录删除,打开游标开始循环,将游标中的数放入结构体变量中-再将游标中的数插入sums表中,执行提交,关闭游标。BEGIN delete from sums where to_char(sdate,'yyyy-mm-dd') = to_char(sysdate,'yyyy-mm-dd');- delete
10、 from sums where to_char(sdate,'yyyy-mm-dd') = to_char(to_date('2010-12-09','yyyy-mm-dd'),'yyyy-mm-dd');-删除某日期的记录 OPEN C; LOOP FETCH c INTO v_details; EXIT WHEN c%NOTFOUND;- v_sqlstr:='insert into sums (stn,sdate,traindir,total,afcar) ' |'values (''
11、;'|v_details.stn|''','''|v_details.sdate|''', '''|v_details.traindir|''','''|v_details.total|''', '''|v_details.afcar|''')' EXECUTE immediate v_sqlstr; commit;-or-另一种插入写法,此方法不用定义v_sqls
12、tr- insert into sums (stn,sdate,traindir,total,afcar) values (v_details.stn,v_details.sdate, v_details.traindir,v_details.total, v_details.afcar); commit;- END LOOP;CLOSE c;3.2 WHILE循环create or replace procedure TEST is cursor c is SELECT stn, sdate, traindir, sum(total) total, sum(afcar) afcar FROM
13、 DETAILS GROUP BY STN,SDATE,TRAINDIR;v_details c%rowtype;BEGIN delete from sums where to_char(sdate,'yyyy-mm-dd') = to_char(to_date('2010-12-12','yyyy-mm-dd'),'yyyy-mm-dd'); OPEN c; FETCH c INTO v_details; WHILE c%FOUND LOOP insert into sums (stn,sdate,traindir,total,
14、afcar) values (v_details.stn,v_details.sdate, v_details.traindir,v_details.total, v_details.afcar); COMMIT; FETCH C INTO v_details; END LOOP;CLOSE c;EXCEPTION when no_data_found thendbms_output.put_line('出现异常,无数据!');when others thendbms_output.put_line('其他异常出现!');end TEST;3.3 FOR循环用法
15、create or replace procedure TEST is cursor c is select stn, sdate, traindir, sum(total) total, sum(afcar) afcar FROM DETAILS GROUP BY STN,SDATE,TRAINDIR; v_details c%rowtype;BEGIN delete from sums where to_char(sdate,'yyyy-mm-dd') = to_char(sysdate,'yyyy-mm-dd'); FOR v_details IN c L
16、OOP insert into sums (stn,sdate,traindir,total,afcar) values (v_details.stn,v_details.sdate, v_details.traindir,v_details.total, v_details.afcar); commit; END LOOP; exception when no_data_found thendbms_output.put_line('出现异常,无数据!');when others thendbms_output.put_line('其他异常出现!');roll
17、back;end TEST;-另一种写法,不定义游标-create or replace procedure TEST isBEGIN delete from sums where to_char(sdate,'yyyy-mm-dd') = to_char(sysdate,'yyyy-mm-dd'); FOR v_details IN (select stn, sdate, traindir, sum(total) total, sum(afcar) afcar FROM DETAILS GROUP BY STN,SDATE,TRAINDIR) LOOP insert into sums (stn,sdate,traindir,total,afcar) values (v_details.stn,v_details.sdate, v_details.traindir,v_details.total, v_details.afcar); commit; END LOOP;end
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 现代企业财务管理策略与风险识别
- 年终管理层发言稿
- 英语老师家长会发言稿
- 知识产权保护在电子商务中的实践与挑战
- 知识产权保护的科技手段与应用实践
- 毕业班鼓劲发言稿
- 知识产权侵权赔偿与诉讼策略
- 现代药物分析技术在公共卫生领域的应用
- 环境科技产业的创新驱动及市场机遇探索
- 教师年度个人思想工作情况总结
- GJB438C模板-软件开发计划(已按标准公文格式校准)
- 2023年政府采购评审专家考试真题及答案
- 云端数据加密与密钥管理解决方案
- 毒麻药品试题答案
- 《公路桥涵养护规范》(5120-2021)【可编辑】
- 2023年中国(安徽)大学生茶文化创新大赛试题库
- 医疗器械专业知识培训课件
- 传统体育养生学
- 锂离子电池简介课件
- DB4401∕T 33-2019 电梯托管标准化管理规范
- 医院物业(保洁)技术服务投标方案
评论
0/150
提交评论