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