Oracle存储过程学习

存储过程创建语法:

create or replace procedure 存储过程名(param1 in type,param2 out type)

as

变量1 类型(值范围);

变量2 类型(值范围);

Begin

Select count(*) into 变量1 from 表A where列名=param1;

If (判断条件) then

Select 列名 into 变量2 from 表A where列名=param1;

Dbms_output。Put_line(‘打印信息’);

Elsif (判断条件) then

Dbms_output。Put_line(‘打印信息’);

Else

Raise 异常名(NO_DATA_FOUND);

End if;

Exception

When others then

Rollback;

End;

注意事项:

1,  存储过程参数不带取值范围,in表示传入,out表示输出

2,  变量带取值范围,后面接分号

3,  在判断语句前最好先用count(*)函数判断是否存在该条操作记录

4,  用select 。。。into。。。给变量赋值

5,  在代码中抛异常用 raise+异常名

以命名的异常

命名的系统异常                          产生原因

ACCESS_INTO_NULL                   未定义对象

CASE_NOT_FOUND                     CASE 中若未包含相应的 WHEN ,并且没有设置

ELSE 时

COLLECTION_IS_NULL                集合元素未初始化

CURSER_ALREADY_OPEN          游标已经打开

DUP_VAL_ON_INDEX                   唯一索引对应的列上有重复的值

INVALID_CURSOR                 在不合法的游标上进行操作

INVALID_NUMBER                       内嵌的 SQL 语句不能将字符转换为数字

NO_DATA_FOUND                        使用 select into 未返回行,或应用索引表未初始化的

TOO_MANY_ROWS                      执行 select into 时,结果集超过一行

ZERO_DIVIDE                              除数为 0

SUBSCRIPT_BEYOND_COUNT     元素下标超过嵌套表或 VARRAY 的最大值

SUBSCRIPT_OUTSIDE_LIMIT       使用嵌套表或 VARRAY 时,将下标指定为负数

VALUE_ERROR                             赋值时,变量长度不足以容纳实际数据

LOGIN_DENIED                           PL/SQL 应用程序连接到 oracle 数据库时,提供了不

正确的用户名或密码

NOT_LOGGED_ON                       PL/SQL 应用程序在没有连接 oralce 数据库的情况下

访问数据

PROGRAM_ERROR                       PL/SQL 内部问题,可能需要重装数据字典& pl./SQL

系统包

ROWTYPE_MISMATCH                宿主游标变量与 PL/SQL 游标变量的返回类型不兼容

SELF_IS_NULL                             使用对象类型时,在 null 对象上调用对象方法

STORAGE_ERROR                        运行 PL/SQL 时,超出内存空间

SYS_INVALID_ID                         无效的 ROWID 字符串

TIMEOUT_ON_RESOURCE         Oracle 在等待资源时超时

存储过程创建语法:

create or replace procedure 存储过程名(param1 in type,param2 out type)

as

变量1 类型(值范围);

变量2 类型(值范围);

Begin

Select count(*) into 变量1 from 表A where列名=param1;

If (判断条件) then

Select 列名 into 变量2 from 表A where列名=param1;

Dbms_output。Put_line(‘打印信息’);

Elsif (判断条件) then

Dbms_output。Put_line(‘打印信息’);

Else

Raise 异常名(NO_DATA_FOUND);

End if;

Exception

When others then

Rollback;

End;

注意事项:

1,  存储过程参数不带取值范围,in表示传入,out表示输出

2,  变量带取值范围,后面接分号

3,  在判断语句前最好先用count(*)函数判断是否存在该条操作记录

4,  用select 。。。into。。。给变量赋值

5,  在代码中抛异常用 raise+异常名

以命名的异常

命名的系统异常                          产生原因

ACCESS_INTO_NULL                   未定义对象

CASE_NOT_FOUND                     CASE 中若未包含相应的 WHEN ,并且没有设置

ELSE 时

COLLECTION_IS_NULL                集合元素未初始化

CURSER_ALREADY_OPEN          游标已经打开

DUP_VAL_ON_INDEX                   唯一索引对应的列上有重复的值

INVALID_CURSOR                 在不合法的游标上进行操作

INVALID_NUMBER                       内嵌的 SQL 语句不能将字符转换为数字

NO_DATA_FOUND                        使用 select into 未返回行,或应用索引表未初始化的

TOO_MANY_ROWS                      执行 select into 时,结果集超过一行

ZERO_DIVIDE                              除数为 0

SUBSCRIPT_BEYOND_COUNT     元素下标超过嵌套表或 VARRAY 的最大值

SUBSCRIPT_OUTSIDE_LIMIT       使用嵌套表或 VARRAY 时,将下标指定为负数

VALUE_ERROR                             赋值时,变量长度不足以容纳实际数据

LOGIN_DENIED                           PL/SQL 应用程序连接到 oracle 数据库时,提供了不

正确的用户名或密码

NOT_LOGGED_ON                       PL/SQL 应用程序在没有连接 oralce 数据库的情况下

访问数据

PROGRAM_ERROR                       PL/SQL 内部问题,可能需要重装数据字典& pl./SQL

系统包

ROWTYPE_MISMATCH                宿主游标变量与 PL/SQL 游标变量的返回类型不兼容

SELF_IS_NULL                             使用对象类型时,在 null 对象上调用对象方法

STORAGE_ERROR                        运行 PL/SQL 时,超出内存空间

SYS_INVALID_ID                         无效的 ROWID 字符串

TIMEOUT_ON_RESOURCE         Oracle 在等待资源时超时


相关内容

  • Oracle笔试题目带答案
  • 1. ( )程序包用于读写操作系统文本文件.(选一项) A.Dbms_output B.Dbms_lob C.Dbms_random D.Utl_file 2. ( )触发器允许触发操作的语句访问行的列值.(选一项) A.行级 B.语句级 C.模式 D.数据库级 3. ( )是oracle在启动期间 ...

  • oracle学习计划
  • oracle学习计划一:Swufe Oracle Club BI学习计划 一. 学习内容: (一)工具(老成员): 1. Oracle BI:熟练使用该工具:重点学习报表设计:权限管理:BI Publisher. 2. Excel:熟练适用常用的统计.分析函数能够高效地提升项目进度. 3.Pl/Sq ...

  • 毕业论文---oracle数据库巡检报告自动生成工具
  • 题 目:oracle 数据库巡检报告自动生成工具 目 录 摘 要: .................................................................................................................... ...

  • 数据库逻辑结构大全(精)
  • Oracle 数据库逻辑结构 2.1.1Oracle 系统体系结构 话说与其他数据库产品不同,Oracle 有其自己独特的系统体系结构.Oracl e 系统体系结构是整个Oracle 服务器系统的框架,是管理和应用Oracle 数据服务器的基础和核心. Oracle 系统体系结构由三部分组成:逻辑结 ...

  • Oracle数据库安全解决方案及技术综述
  • Oracle 数据库安全解决方案及技术综述 学 院: 专 业: 学 号: 学生姓名: 指导教师: 日 期: 电子与信息工程学院 xxxxxxxx xxxxxx xxxxx xxxxxx xxxxxxx Oracle 数据库安全解决方案及技术综述 1. 背景介绍 随着网络技术的飞速发展.网络安全问题日 ...

  • 数据库设计规范化的五个要求
  • 数据库设计规范化的五个要求 通常情况下,可以从两个方面来判断数据库是否设计的比较规范.一是看看是否拥有大量的窄表,二是宽表的数量是否足够的少.若符合这两个条件,则可以说明这个数据库的规范化水平还是比较高的.当然这是两个泛泛而谈的指标.为了达到数据库设计规范化的要求,一般来说,需要符合以下五个要求. ...

  • 空间数据库的构建
  • 第21卷第3期 2002年9月<新疆师范大学学报>(自然科学版)JournalofXinjiangNormalUniversity (NaturalSciencesV01.21,No.3Sub.2002Edition) 空间数据库的构建 杨雪峰 (新疆师范大学生命与环境科学学院,乌鲁木齐 ...

  • 软件开发面试基础题
  • 一.数据库系统 1.1:数据库基本理论 1.数据库与数据库管理系统有什么区别? 答:数据库是以某种数据模型所确定的数据结构方式来组织和存储数据的.简单来说,数据库是存放数据的仓库,数据库管理系统是用来管理数据库的. 2.是什么数据模型? 答:数据模型是对现实世界数据特征进行抽象的工具,用来描述和处理 ...

  • 数据库管理-外文文献
  • 数据库管理 数据库(有时拼成Database)也称为电子数据库,是指由计算机特别组织的用下快速查找和检索的任意的数据或信息集合.数据库与其它数据处理操作协同工作,其结构要有助于数据的存储.检索.修改和删除.数据库可存储在磁盘或磁带.光盘或某些辅助存储设备上. 一个数据库由一个文件或文件集合组成.这些 ...