加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Oracle存储过程初学

发布时间:2020-12-12 16:44:45 所属栏目:百科 来源:网络整理
导读:div id="cnblogs_post_body" div class="Section0" 存储过程 ?IS ?BEGIN ??NULL; ?END; 存储过程创建语法: 打印信息’); 打印信息’); vs_ym_beg??CHAR(6);??????-- vs_ym_end??CHAR(6);??????-- vs_ym_sn_beg?CHAR(6);?????-- vs_ym_sn_end?CHAR(6);?????-

<div id="cnblogs_post_body">
<div class="Section0">

存储过程

?IS

?BEGIN

??NULL;

?END;

存储过程创建语法:

打印信息’);

打印信息’);

vs_ym_beg??CHAR(6);??????--vs_ym_end??CHAR(6);??????--vs_ym_sn_beg?CHAR(6);?????--vs_ym_sn_end?CHAR(6);?????----定义游标 CURSOR?cur_1?IS???SELECT?。。。???FROM?。。。?????WHERE?。。。???GROUP?BY?。。。; BEGIN --用输入参数给变量赋初值,用到了

vs_ym_beg?:=?SUBSTR(is_ym,1,6);?vs_ym_end?:=?SUBSTR(is_ym,7,6);?vs_ym_sn_beg?:=?TO_CHAR(ADD_MONTHS(TO_DATE(vs_ym_beg,'yyyymm'),?-12),'yyyymm');?vs_ym_sn_end?:=?TO_CHAR(ADD_MONTHS(TO_DATE(vs_ym_end,'yyyymm');?

?

?INSERT?INTO表名(area_code,ym,CMCODE,rmb_amt,usd_amt)?SELECT?area_code,is_ym,SUM(rmb_amt)/10000,SUM(usd_amt)/10000?FROM?BGD_AREA_CM_M_BASE_T???WHERE?ym?>=?vs_ym_beg???AND?ym?<=?vs_ym_end?GROUP?BY?area_code,CMCODE;?DBMS_OUTPUT.put_line('ins--遍历游标处理后更新到表。遍历游标有几种方法,用。FOR?rec?IN?cur_1?LOOP???UPDATE?表名??SET?rmb_amt_sn?=?rec.rmb_amt_sn,usd_amt_sn?=?rec.usd_amt_sn????WHERE?area_code?=?rec.area_code????AND?CMCODE?=?rec.CMCODE????AND?ym?=?is_ym;?END?LOOP; COMMIT; --错误处理部分。 EXCEPTION ???WHEN?OTHERS?THEN???????vs_msg?:=?'ERROR?IN?xxxxxxxxxxx_p('||is_ym||'):'||SUBSTR(SQLERRM,500);???ROLLBACK; ???--把当前错误记录进日志表。 ???INSERT?INTO?LOG_INFO(proc_name,error_info,op_date)????VALUES('xxxxxxxxxxx_p',vs_msg,SYSDATE);????COMMIT;????RETURN; END;

?

0?then?

?

?

?

?

?

?(?

?Oracle?

?

该游标是

?

exit?when?cursor%NOTFOUND;??????????????--SYS_REFCURSOR?

>??average?:=?total?/?5;?

?

=====================================================================================================下面是在plsql里调用带输出参数的存储过程: 第一种情况是返回的游标是某个具体的表或视图的数据,如: SQL-Code: *

其中USERS就是数据库中一个表。在调用的时候只要声明一个该表的ROWTYPE类型就可以了:

SQL-Code:

%% 第二种情况,我们返回的不是表的所有的列,或许只是其中一列或两列,如: SQL-Code: 这里我们只返回了USERS表的ID,NAME这两个列,那么调用的时候也必须做相应的修改: SQL-Code: TMPCURSOR ID,NAME USERS ROWNUM VARCURSOR VARCURSOR LOOP;

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读