oracle存储过程遇到的问题
最近新的项目,会批量执行数据,用到了存储过程和函数,遇到的问题记录如下:
1、涉及大量数据,所以决定分批commit数据
2、out无论是存储过程还是函数,都会返回数据,当时当我们手动raise(抛出异常时),参数并不会返回。感觉应该和java代码一样,抛出异常,被上层调用捕获,并没有返回值
3、MSG := SQLCODE || SQLERRM;可以查看错误信息
4、设计相关,最原子性的操作如果抛出异常后,可以通过错误代码,错误信息传送给调用者,依次传送到最外层调用者。最后返回给程序调用者
5、建包后,可能调试进不到程序中(没有验证)
6、如果存储过程不能debug执行到存储过程中,可以尝试重新编译
7、计算时,例如计算相差时间,可以通过伪表dual,将数据into到声明的变量中
8、可以自定义类型type,封装参数
9、动态sql语句,要用到动态游标,如下
--定义一个动态游标
TYPE REF_CURSOR_TYPE IS REF CURSOR;
--定义游标类型
INFO_CURSOR REF_CURSOR_TYPE;
10、循环游标暂时知道两种方式
有一种带参数的游标,项目中没有用到,参考http://blog.csdn.net/s630730701/article/details/68938837
10.1、
不用手动打开关闭游标
FOR 自定义随便起名 IN 游标名称 LOOP
END LOOP;
10.2、
--声明游标
CUSOR 游标名称 IS
查询语句;(普通游标)
--打开游标
OPEN INFO_CURSOR FOR VSQL;(动态游标);
OPEN INFO_CURSOR(普通游标);
--循环游标
LOOP
FETCH 游标名称 INTO 变量;
EXIT WHEN 游标名称%NOTFOUND;
END LOOP;
--关闭游标
CLOSE 游标;
11、执行动态sql
计算条数:
EXECUTE IMMEDIATE 动态SQL名称 INTO 变量;
12、遇到死锁等问题,可以用sys登录,在工具栏中的session,kill掉session。如下所示

oracle存储过程遇到的问题的更多相关文章
- oracle 存储过程
来自:http://www.jb51.net/article/31805.htm Oracle存储过程基本语法 存储过程 1 CREATE OR REPLACE PROCEDURE 存储过程名 2 I ...
- Oracle存储过程语法
原文链接:http://www.jb51.net/article/31805.htm Oracle存储过程基本语法 存储过程 1 CREATE OR REPLACE PROCEDURE 存储过程名 ...
- ORACLE存储过程调用Web Service
1. 概述 最近在ESB项目中,客户在各个系统之间的服务调用大多都是在oracle存储过程中进行的,本文就oracle存储过程调用web service来进行说明.其他主流数据库,比如mysql和sq ...
- Oracle存储过程基本语法介绍
Oracle存储过程基本语法 存储过程 1 CREATE OR REPLACE PROCEDURE 存储过程名 2 IS 3 BEGIN 4 NULL; 5 END; 行1: CREATE OR RE ...
- MyBatis调用Oracle存储过程
MyBatis调用Oracle存储过程 1.无输入和输出参数的存储过程 2.带有输入和输出参数的存储过程 3.返回游标的存储过程 mybatis中的配置文件代码 <resultMap type= ...
- Oracle存储过程(转)
Oracle存储过程基本语法 存储过程 1 CREATE OR REPLACE PROCEDURE 存储过程名 2 IS 3 BEGIN 4 NULL; 5 END; 行1: CREATE OR RE ...
- Oracle存储过程中异常Exception的捕捉和处理
Oracle存储过程中异常的捕捉和处理 CREATE OR REPLACE Procedure Proc_error_process ( v_IN in Varchar2, v_OUT Out Var ...
- Oracle存储过程动态创建临时表/存储过程执行权限问题--AUTHID CURRENT_USER
关于Oracle存储过程执行权限问题的解决 http://blog.sina.com.cn/s/blog_6ceed3280101hvlo.html (2014-04-02 04:06:28) 转载▼ ...
- ORACLE存储过程学习
存储过程 1 CREATE OR REPLACE PROCEDURE 存储过程名 2 IS 3 BEGIN 4 NULL; 5 END; 行1: CREATE OR REPLACE PROCEDURE ...
- C# 获取 oracle 存储过程的 返回值1
/// <summary> /// 返回对应表的模拟自增字段值 /// </summary> /// <param name="tablename"& ...
随机推荐
- zabbix 官方文档
https://www.zabbix.com/documentation/3.4/manual
- 实例化和设置一个优秀的php对象
类是用于生成对象的代码模板,对象可以被说成是类的"实例" class ShopProduct{ public $title = 'default product'; // 属性也称 ...
- linux下自定义域名访问本机部署的应用
在linux系统下,用weblogic部署了两套应用,创建了两个虚拟主机,一个主机指向www.test1.com, 另一个虚拟主机指向www.test2.com. 一套应用指定一台虚拟主机. 修改/e ...
- 哪个中年IT男不是一边面对危机,一边咬牙硬抗
本文转自:https://www.cnblogs.com/gossip/p/8297294.html 对于 2017 年年末那则令人哀伤的消息,相信很多同龄人都会触目伤怀.面对公司的强制性劝退,深圳中 ...
- 彻底放弃没落的MFC,对新人的忠告! by FreeWick
完全没想到10多年后还有人纠结要不要学MFC,我花点时间给新人们一个总结. 第1种观点 学习完MFC,你会更理解编程的思想,再学别的语言就更快了. 话说小白要去美国学技术,大黑劝他说:“你为什么不先到 ...
- 关于Hook CreateMutex
我是个驱动新手,最近学习破解多开.经过一个通宵的百度和摸索,简单的多开kugou用以下代码可以了. MyNtCreateMutant( OUT PHANDLE MutantHandle, IN ACC ...
- 八幅漫画理解使用 JSON Web Token 设计单点登录系统
原文出处: John Wu 上次在<JSON Web Token – 在Web应用间安全地传递信息>中我提到了JSON Web Token可以用来设计单点登录系统.我尝试用八幅漫画先让大家 ...
- Linux及Arm-Linux程序开发笔记(零基础入门篇)
Linux及Arm-Linux程序开发笔记(零基础入门篇) 作者:一点一滴的Beer http://beer.cnblogs.com/ 本文地址:http://www.cnblogs.com/bee ...
- ThinkPhp 使用PhpExcel导出导入多语言文件
在ThinkPHP 里已经实现了多语言功能,只要在指定的目录下创建对应的语言文件并填充内容,即可实现多语言功能 而多语言的翻译却是一个很麻烦的事情,因为客户特定的行业问题导致我们翻译可能是不准确的 于 ...
- Idea调试
Idea调试 学习了:https://www.jb51.net/article/128965.htm 1,多线程同时断点: 2,drop frame 回退调试: 3,条件断点/片段代码: 4,调试的时 ...