最近新的项目,会批量执行数据,用到了存储过程和函数,遇到的问题记录如下:

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存储过程遇到的问题的更多相关文章

  1. oracle 存储过程

    来自:http://www.jb51.net/article/31805.htm Oracle存储过程基本语法 存储过程 1 CREATE OR REPLACE PROCEDURE 存储过程名 2 I ...

  2. Oracle存储过程语法

    原文链接:http://www.jb51.net/article/31805.htm Oracle存储过程基本语法 存储过程  1 CREATE OR REPLACE PROCEDURE 存储过程名  ...

  3. ORACLE存储过程调用Web Service

    1. 概述 最近在ESB项目中,客户在各个系统之间的服务调用大多都是在oracle存储过程中进行的,本文就oracle存储过程调用web service来进行说明.其他主流数据库,比如mysql和sq ...

  4. Oracle存储过程基本语法介绍

    Oracle存储过程基本语法 存储过程 1 CREATE OR REPLACE PROCEDURE 存储过程名 2 IS 3 BEGIN 4 NULL; 5 END; 行1: CREATE OR RE ...

  5. MyBatis调用Oracle存储过程

    MyBatis调用Oracle存储过程 1.无输入和输出参数的存储过程 2.带有输入和输出参数的存储过程 3.返回游标的存储过程 mybatis中的配置文件代码 <resultMap type= ...

  6. Oracle存储过程(转)

    Oracle存储过程基本语法 存储过程 1 CREATE OR REPLACE PROCEDURE 存储过程名 2 IS 3 BEGIN 4 NULL; 5 END; 行1: CREATE OR RE ...

  7. Oracle存储过程中异常Exception的捕捉和处理

    Oracle存储过程中异常的捕捉和处理 CREATE OR REPLACE Procedure Proc_error_process ( v_IN in Varchar2, v_OUT Out Var ...

  8. Oracle存储过程动态创建临时表/存储过程执行权限问题--AUTHID CURRENT_USER

    关于Oracle存储过程执行权限问题的解决 http://blog.sina.com.cn/s/blog_6ceed3280101hvlo.html (2014-04-02 04:06:28) 转载▼ ...

  9. ORACLE存储过程学习

    存储过程 1 CREATE OR REPLACE PROCEDURE 存储过程名 2 IS 3 BEGIN 4 NULL; 5 END; 行1: CREATE OR REPLACE PROCEDURE ...

  10. C# 获取 oracle 存储过程的 返回值1

    /// <summary> /// 返回对应表的模拟自增字段值 /// </summary> /// <param name="tablename"& ...

随机推荐

  1. 使用 P6Spy 来格式化 SQL 语句,支持 Hibernate 和 iBATIS

    事情起因 在处理一个查询小功能的时候,自认为 SQL 语句和传参均正确,然而查询结果无匹配数据,在查看 Hibernate 自带 SQL 语句输出的时候带着问好感觉有点不爽,特别是想复制 SQL 语句 ...

  2. php 获取URL

    #测试网址: http://localhost/blog/testurl.php?id=5 //获取域名或主机地址 echo $_SERVER['HTTP_HOST']."<br> ...

  3. 喵哈哈村的魔法考试 Round #21 (Div.2) 题解

    $ \sum{i=0}^{n-1}\sum{j=i}^{n-1}\mid Ai - Aj \mid $ 小学生在上课 题目大意:给你一个正整数N,问你1 ~ (n-1) 所有在模N下的逆的和(只计算存 ...

  4. pycharm如何设置python版本、设置国内pip镜像、添加第三方类库

    直接上图(mac环境): 一.设置项目的python版本 File->Default Settings ... 在弹出的界面上(参考下图),左上角的下拉框里,选择python解释器的版本即可(建 ...

  5. Sallen-Key Active Butterworth Low Pass Filter Calculator

    RC 2nd Order Passive Low Pass Filter The cut-off frequency of second order low pass filter is given ...

  6. ASP.NET Web API中通过URI显示实体中的部分字段

    有时候我们可能不想显示某个实体中的所有字段.比如客户端发出如下请求: locaohost:43321/api/groups/1/items?fields=idlocaohost:43321/api/g ...

  7. 使用three.js写全景图,使用sprite类canvas,结合射线,点击跳转指定全景图【转】

    https://blog.csdn.net/WDCCSDN/article/details/81214804 话不多说上代码: 1.html: <!DOCTYPE html>    < ...

  8. centos7下opencv3的安装

    前面说过opencv和python模块的安装,版本是基于opencv 2的,这篇主要说一下opencv3的安装过程以及相关依赖问题的解决,同样opencv3的安装包在官网上可以下载,最新稳定版是3.3 ...

  9. 浅谈压缩感知(二十二):压缩感知重构算法之正则化正交匹配追踪(ROMP)

    主要内容: ROMP的算法流程 ROMP的MATLAB实现 一维信号的实验与结果 测量数M与重构成功概率关系的实验与结果 一.ROMP的算法流程 正则化正交匹配追踪ROMP算法流程与OMP的最大不同之 ...

  10. ios mac 对照片进行JPEG压缩

    ios mac 对照片进行JPEG压缩 1. 在iOS上可以使用 API UIImageJPEGRepresentation 对照片数据进行JPEG压缩: 我们知道iOS其实是MAC OS 的移植,那 ...