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

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. zabbix 官方文档

    https://www.zabbix.com/documentation/3.4/manual

  2. 实例化和设置一个优秀的php对象

    类是用于生成对象的代码模板,对象可以被说成是类的"实例" class ShopProduct{ public $title = 'default product'; // 属性也称 ...

  3. linux下自定义域名访问本机部署的应用

    在linux系统下,用weblogic部署了两套应用,创建了两个虚拟主机,一个主机指向www.test1.com, 另一个虚拟主机指向www.test2.com. 一套应用指定一台虚拟主机. 修改/e ...

  4. 哪个中年IT男不是一边面对危机,一边咬牙硬抗

    本文转自:https://www.cnblogs.com/gossip/p/8297294.html 对于 2017 年年末那则令人哀伤的消息,相信很多同龄人都会触目伤怀.面对公司的强制性劝退,深圳中 ...

  5. 彻底放弃没落的MFC,对新人的忠告! by FreeWick

    完全没想到10多年后还有人纠结要不要学MFC,我花点时间给新人们一个总结. 第1种观点 学习完MFC,你会更理解编程的思想,再学别的语言就更快了. 话说小白要去美国学技术,大黑劝他说:“你为什么不先到 ...

  6. 关于Hook CreateMutex

    我是个驱动新手,最近学习破解多开.经过一个通宵的百度和摸索,简单的多开kugou用以下代码可以了. MyNtCreateMutant( OUT PHANDLE MutantHandle, IN ACC ...

  7. 八幅漫画理解使用 JSON Web Token 设计单点登录系统

    原文出处: John Wu 上次在<JSON Web Token – 在Web应用间安全地传递信息>中我提到了JSON Web Token可以用来设计单点登录系统.我尝试用八幅漫画先让大家 ...

  8. Linux及Arm-Linux程序开发笔记(零基础入门篇)

    Linux及Arm-Linux程序开发笔记(零基础入门篇)  作者:一点一滴的Beer http://beer.cnblogs.com/ 本文地址:http://www.cnblogs.com/bee ...

  9. ThinkPhp 使用PhpExcel导出导入多语言文件

    在ThinkPHP 里已经实现了多语言功能,只要在指定的目录下创建对应的语言文件并填充内容,即可实现多语言功能 而多语言的翻译却是一个很麻烦的事情,因为客户特定的行业问题导致我们翻译可能是不准确的 于 ...

  10. Idea调试

    Idea调试 学习了:https://www.jb51.net/article/128965.htm 1,多线程同时断点: 2,drop frame 回退调试: 3,条件断点/片段代码: 4,调试的时 ...