1、存储过程简单实例

CREATE OR REPLACE PROCEDURE  存储过程名称 (参数in,参数out)
AS
-- 变量声明,每个声明用分号结束。可以在声明的同时初始化
name varchar2(50);
age number(8) default 0; --开始逻辑运算
BEGIN --业务逻辑 END

2、游标实现方式、

--显式实现方式(可以实现多值)

cursor cursorVar is select event_id, isagain, rate from call_event where sender = v_sender;   -- 声明游标,select语句可以包括单引号等。

begin
open cursorVar; -- 打开游标
loop
fetch cursorVar into v_event_id, v_isagain, v_rate; -- 取值
exit when cursorVar%notfound; --当没有记录时退出循环
dbms_output.put_line(v_event_id || ', ' || v_isagain || ', ' || v_rate);
end loop; close cursorVar; -- 关闭游标 --游标的属性有:%FOUND,%NOTFOUNRD,%ISOPEN,%ROWCOUNT;
--%FOUND:已检索到记录时,返回true
--%NOTFOUNRD:检索不到记录时,返回true
--%ISOPEN:游标已打开时返回true
--%ROWCOUNT:代表检索的记录数,从1开始
end;

--隐式游标(可以实现查询多值)

for currow in (
select t.col1, t.col2
from tableName t
where ...
) loop
if currow.col1 = 0 then
return; -- 中止sp,返回
end if;
end loop;

--带参数的游标(可以实现查询多值)

declare
isok integer;
v_event_id number(10);
v_isagain number(2);
v_rate number(2); v_sender char(11) := ''; cursor cursorVar(p_sender varchar2) is select event_id, isagain, rate from call_event where sender = p_sender; -- 声明游标 begin
open cursorVar(v_sender); -- 打开游标,在括号里传参。
loop
fetch cursorVar into v_event_id, v_isagain, v_rate; -- 取值
exit when cursorVar%notfound; --当没有记录时退出循环
dbms_output.put_line(v_event_id || ', ' || v_isagain || ', ' || v_rate);
end loop; close cursorVar; -- 关闭游标
end;

3、异常处理

EXCEPTION
WHEN OTHERS THEN
vs_msg := 'ERROR IN xxxxxxxxxxx_p('||is_ym||'):'||SUBSTR(SQLERRM,1,500); ROLLBACK; --把当前错误记录进日志表。
INSERT INTO LOG_INFO(proc_name,error_info,op_date)
VALUES('xxxxxxxxxxx_p',vs_msg,SYSDATE);
COMMIT;
RETURN;

参考oracle存储过程基础语法+提升+例子总结

Oracle存储过程基本语法与基础教程

最新文章

  1. Android源码——Activity进程内启动
  2. member template
  3. Docker与容器快速入门
  4. HTML-Canvas02
  5. CSU-ACM2016暑假集训训练1-二分搜索 A - Can you find it?
  6. View的getLeft, getRight, getTop, getBottom
  7. C#关于窗体的keysdown事件,无法获取到焦点
  8. python爬虫从入门到放弃(六)之 BeautifulSoup库的使用
  9. z-index的权重是叠加的
  10. svg---基础1
  11. tomcat启动,但是访问不了可能的一种状况。
  12. python 打包成 windows .EXE
  13. 关闭浏览器时提示的javascript事件
  14. python学习之python安装
  15. AsyncTask 处理耗时操作&&显示进度条
  16. Java是如何读到hbase-site.xml 的内容的
  17. Phantomjs 抓取、分析某个页面加载时浏览器发起的所有的子请求
  18. Class与Style绑定
  19. CentOS7安装Openvswitch 2.3.1 LTS
  20. Java网络编程(二)关于Socket的一些个人想法

热门文章

  1. JQuery 操作 iframe
  2. VMware ESXI 6.5安装教程
  3. Linux FTP 上传一键脚本
  4. 使用eclipse搭建第一个python+Django的web开发实例
  5. Excel下载打不开
  6. HTML文本/文字竖直方向/纵向显示
  7. Phoenix on HBase
  8. UVA 12716 GCD XOR (异或)
  9. JavaScript -- 节点操作, 事件触发, 表单伸缩
  10. Python之flask总结