存储过程小结:
CREATE OR REPLACE PROCEDURE AXAPC.SP_PRINT_REPORT
(IN_PARAM01 IN CHAR,
IN_OUT_PARAM02 IN OUT CHAR,
OUT_PARAM03 OUT VARCHAR2)
AS
NOWAITLOCKED EXCEPTION;
PRAGMA EXCEPTION_INIT(NOWAITLOCKED,-00054);
TEMP_PARAM01 DATE;
TEMP_PARAM02 %TYPE;
CURSOR FCRCURSOR IS
SELECT * FROM T_TEST_TABLE01;
BEGIN
OUT_PARAM03 := '1';
TMP_FCR_NO := '';
FOR FCRDATA IN FCRCURSOR LOOP
TEMP_PARAM01 := '';
TEMP_PARAM02 := '';
EXECUTE IMMEDIATE 'ALTER SESSION SET NLS_CALENDAR="GREGORIAN"';
FCRCOMMENT := 'FCR入力 ' || TO_CHAR(FCRDATA.CREAT_DT, 'YYYY/MM/DD HH24:MI');
END LOOP;
COMMIT;
--lockを取れない。
EXCEPTION WHEN NOWAITLOCKED THEN
--結果が2、lockを取れない
OUT_PARAM03 := '2';
ROLLBACK;
RETURN;
WHEN OTHERS THEN
OUT_PARAM03 := '1';
ROLLBACK;
RETURN;
END;
/
1.创建过程
过程参数有IN,OUT,IN OUT三种模式。
IN:传入的参数。过程中值不能改变。
OUT:返回的参数,在过程内部赋值。
IN OUT:即是传入的参数,也是返回的参数。过程运行时已经有具体值,过程中也可以修改。
2.AS/IS 声明过程中用到的临时变量。
EXCEPTION,CURSOR等也是在这里声明。
EXCEPTION 用以下语句声明。其中,00054是ORACLE内部定义的编号。这个异常没有名字。我们根据异常的内容可以定一个有意义的名字。如果不知道编号,可以让程序出现这个异常。就可以找到这个编号了。
NOWAITLOCKED EXCEPTION;
PRAGMA EXCEPTION_INIT(NOWAITLOCKED,-00054);
3.过程体
BEGIN END中间是过程体。
其中比较重要的是对CURSOR的操作。
一般对游标的操作有以下几个步骤:
a。声明一些变量,用来保存Select的列值
b。声明游标
c。打开游标 open 游标名
d。从游标取得记录 fetch 游标名 into 变量名
e。关闭游标 close 游标名
其中ab已经说过了。剩下的步骤就是在过程体中完成了。
一般过程:
open 游标名
LOOP
fetch 游标名 into 变量名
END LOOP
close 游标名
这个过程有些繁琐。
用FOR循环之后就简单多了。
FOR FCRDATA IN 游标名 LOOP
END LOOP;
FOR循环可以不用显式的打开和关闭游标。FOR循环会自动执行这些。
4.EXCEPTION的捕捉。
EXCEPTION
WHEN NOWAITLOCKED THEN
OUT_PARAM03 := '2';
ROLLBACK;
RETURN;
WHEN OTHERS THEN
OUT_PARAM03 := '1';
ROLLBACK;
RETURN;
END;
当EXCEPTION发生的时候,就会跳转到这里。先判断是不是预定义的EXCEPTION。不是则用OTHERS来处理。
OTHERS可以处理所有的异常。必须在所有的特定异常之后。
5.调用过程
CALL 过程名(参数)
6.删除过程
DROP 过程名
7 获取过程的信息
SELECT * FROM USER_PROCEDURES
分享到:
相关推荐
内容概要:简单的C# winform调用存储过程实例,创建存储过程入参,通过SqlConnection对象和SqlCommand对象调用存储过程,获取存储过程的出参并显示出来,详细代码注释,希望对用到C#调用存储过程的小伙伴有帮助 ...
资源名称:SQL_Server存储过程调试指南内容简介: 存储过程( Stored Procedure)是一组为了完成特定功能的 SQL 语句集,经编译后存储在数据库中。用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来...
sql 高效分页存储过程 sql 高效分页存储过程 sql 高效分页存储过程 sql 高效分页存储过程 sql 高效分页存储过程
SqlServer存储过程的导出导入 近日在研究SQL的存储过程,这里我陆续将我在使用存储过程中碰到的问题及解决办法发布到网上,请各位大虾指正。 SqlServer存储过程的导出导入,网上相关资料特别少,经过摸索,这里写...
创建一个名为stu_pr的存储过程,该存储过程能查询出051班学生的所有资料,包括学生的基本信息、学生的选课信息(含未选课同学的信息)。要求在创建存储过程前请判断该存储过程是否已创建,若已创建则先删除,并给出...
1、资料包含了作者编写的实际应用场景中使用的存储过程代码,共计118个案例,有完整注释说明。旨在帮助读者通过案例学习,快速掌握存储过程的应用方法和技巧。 2、博主博客:...
本文实例讲述了Python使用cx_Oracle调用Oracle存储过程的方法。分享给大家供大家参考,具体如下: 这里主要测试在Python中通过cx_Oracle调用PL/SQL。 首先,在数据库端创建简单的存储过程。 create or replace ...
birt报表中调用存储过程的方法. 目录 1. 概述 3 2. BIRT支持的存储过程返回值类型 3 3. BIRT调用存储过程的语法 4 4. 创建存储过程数据源/集 4 5. 在BIRT中使用存储过程 5 调用返回单结果集的存储过程。 5 调用...
阅读实验教材《SQL Server 2012数据库管理与开发》第137页到155页的内容,掌握存储过程的概念、了解存储过程的类别(系统存储过程,用户自定义存储过程,扩展存储过程);掌握存储过程的建立;掌握存储过程的两种...
存储过程SQL存储过程SQL存储过程SQL存储过程SQL存储过程SQL存储过程SQL存储过程SQL存储过程SQL存储过程SQL存储过程SQL存储过程SQL存储过程SQL存储过程SQL存储过程
本文实例讲述了mysql存储过程之返回多个值的方法。分享给大家供大家参考,具体如下: mysql存储函数只返回一个值。要开发返回多个值的存储过程,需要使用带有INOUT或OUT参数的存储过程。咱们先来看一个orders表它的...
创建存储过程1 课程目标 1)了解 ——存储过程的优点; 2)理解 —— 存储过程的概念; 3)掌握 —— 存储过程的创建方法; 存储过程优点 使用存储过程的优点有: (1)存储过程在服务器端运行,执行速度快。 (2)...
可以将SQL Server存储过程转为oracle存储过程的工具
db2 存储过程 db2 存储过程 db2 存储过程
MySQL创建存储过程批量插入10万条数据 存储过程 1、首先防止主键冲突,我们清空表。 TRUNCATE table A_student; 2、编写存储过程 delimiter ‘$’; CREATE PROCEDURE batchInsert(in args int) BEGIN declare i int ...
oracle 存储过程实例 oracle存储过程实例
SAP HANA 中调试存储过程 SAP HANA 中调试存储过程 SAP HANA 中调试存储过程
1、 基本完全代替编写存储过程的工作任务。 2、 让不会写存储过程的测试人员,也可顺利完成加压测试工作。 3、 让会写存储过程的测试人员,短时间内完成存储过程编写。 4、 可生成现行业主流的不同数据库类型的存储...
java 调用存储过程java 调用存储过程java 调用存储过程java 调用存储过程java 调用存储过程java 调用存储过程java 调用存储过程