首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Oracle使用总结之异常篇

1.2.2 声明部分引发异常错误 1.3 异常错误处理编程 1.4 PL/SQL 中使用 SQLCODE, SQLERRM异常处理函数 即使是写得最好的PL/SQL程序也会遇到错误或未预料到的事件...当然了,PL/SQL编译错误不能通过PL/SQL异常处理来处理,因为这些错误发生在PL/SQL程序执行之前。...1.1 异常处理概念 异常情况处理(EXCEPTION)是用来处理正常执行过程未预料的事件,程序块的异常处理预定义的错误和自定义错误,由于PL/SQL程序块一旦产生异常而没有指出如何处理,程序就会自动终止整个程序运行...对这种异常情况的处理,需要用户程序定义,然后由ORACLE自动将其引发。 3. 用户定义(User_define) 错误 程序执行过程出现编程人员认为的非正常情况。...1.2.2 声明部分引发异常错误 如果在声明部分引起异常情况,即在声明部分出现错误,那么该错误就能影响到其它的块。

2K60
您找到你想要的搜索结果了吗?
是的
没有找到

PLSQL 游标变量

PL/SQL ,为创建游标变量,首先需要申明一个REF CURSOR类型,然后声明该类型的一个变量。     为了执行多行查询,Oracle 会开启一个未命名的工作区来存放处理信息。...例如,我们把主游标变量传递到嵌套在Pro*C 程序PL/SQL 块,游标变量指向的工作区就可以被访问。     如果客户端含有PL/SQL 引擎,那么从客户端调用服务器端就不会有什么约束。...*Plus操作游标变量 --下面基于前面定义的包get_data,我们SQL*Plus来调用包的游标变量并返回数据 scott@CNMMBO> variable lv_ref_cv refcursor...is incomplete or malformed 8、强类型编译异常 -->下面定义的强类型游标变量返回类型不兼容,则编译抛出异常 DECLARE TYPE strong_ref_cur_type...REF CURSOR适合于只依赖于SQL语句中(不是PL/SQL语句中)变   量的查询 8、不能在联合数组、嵌套表、或者变长数组存储游标变量 9、如果向PL/SQL传递主机游标变量,不能在服务器检索它

1.3K40

存储过程和函数

前言 存储过程和存储函数是事先经过编译并存储在数据库的一段SQL语句的集合,调用存储过程和函数可以简化应用开发人员的工作,减少数据在数据库和应用服务器之间的传输,能够提高数据库的处理效率。...存储过程 创建存储过程 create procedure 存储过程名称() begin sql语句集 end$ 改变语句结束符:delimiter 符号 调用存储过程 call 存储过程名称...procedure [if exists] 存储过程名称; 以下的步骤都必须写在(begin..end) 定义变量 declare 变量名 数据类型 default (默认值); 变量赋值...until 条件 end repeat;  loop语句(利用leave关键字结束循环) 循环名称:loop 执行语句; end loop 循环名称; leave 循环名称; 游标/光标 声明光标...set has_data =0; 用法看上图 存储函数 创建存储函数 create function 存储函数名称(参数 数据类型) returns 数据类型; begin sql语句集

12410

Oracle数据库,浅谈PLSQL异常处理

众所周知,程序的错误一般情况下分为两类:编译错误和运行时错误。其中运行时错误被称为异常。PL/SQL语句块处理异常的部分即为异常处理部分。异常处理部分,可以指定当特定异常发生所采取的动作。...本文我们就来聊一聊PL/SQL异常处理的那些事儿。 ? PL/SQL有两种类型的异常:内置异常和用户自定义异常。其中,内置异常又分为预定义异常和非预定义异常。...为程序处理这种类型的错误,必须添加异常处理部分。...但是,没有发生任何错误,因为变量v_empno被定义为数值类型。这时,你希望自定义异常来处理这种情况,这种类型的异常被称为用户自定义异常。使用该异常之前,必须首先进行声明。...这时可以通过EXCEPTION_INIT编译指令进行错误代码和名称的关联。当PL/SQL语句块的可执行部分出现某个运行错误时,会抛出不同类型的异常。

69720

PLSQL 编程(一)基础,变量,分支,循环,异常

PL/SQL是对SQL语言存储过程语言的扩展,是一种高级数据库程序设计语言,该语言专门用于各种环境下对Oracle数据库进行访问。...除此之外,可以Oracle数据库的某些客户端工具,使用PL/SQL语言也是该语言的一个特点。PL/SQL可以向Java一样实现逻辑判断。条件循环和异常处理等。...--PL/SQL块的结构如下: DECLARE --声明部分: 在此声明PL/SQL用到的变量,类型及游标,以及局部的存储过程和函数 BEGIN -- 执行部分: 过程SQL...使用记录数据类型变量,需要先在声明部分先定义记录的组成、记录的变量,然后执行部分引用该记录变量本身或其中的成员。  该类型可以包含一个或多个成员,每个成员类型可以不同。...每个成员都有一个唯一的下标,它取决于成员在数组的位置。PL/SQL,数组数据类型是VARRAY。

1.6K81

Oracle PLSQL异常高级特性

OraclePL/SQL语句块exception的异常处理部分是非常重要的组成部分,它决定了PL/SQL语句块内部可执行部分在发生异常错误时,程序是友好地提示:程序遇到某些错误而无法执行,还是抛出一堆难以理解的...本文只介绍3PL/SQL异常的三种高级形态,用于解决Oracle内置异常过少,很多时候不能够满足实际的使用需求。...3,SQLCODE 和 SQLERRM  - 异常处理,当异常的名称未知(比如上面1RAISE_APPLICATION_ERROR),都可以使用others来进行异常的捕获处理;  - 由于others... - 请注意exception异常处理部分,该部分里面我们用到了声明部分定义的两个变量,error_code用来存储SQLCODE,error_msg用来存储SQLERRM。...异常处理部分,我们使用了一个PL/SQL语句块来处理这个错误声明两个变量,并将SQLCODE和SQLERRM以字面值赋值的方法给这两个变量

62610

PLSQL --> 动态SQL

=&dno; 对于上述类似的DML语句第一次运行时进行编译,而后续再次调用,则不再编译过程。...以上两种情况,可以创建存储过程来对其进行分页,通过定义变量,根据输入不同的表名,字段名,排序方法来生成不同的SQL 语句。对于输入不同的参数,SQL每次运行时需要事先对其编译。...即多次调用则需要多次编译,此称之为动态SQL。 动态SQL语句通常存放在字符串变量,且SQL语句可以包含占位符(使用冒号开头)。...静态SQL执行前编译,一次编译,多次运行。动态SQL同样执行前编译,但每次执行需要重新编译。 静态SQL可以使用相同的执行计划,对于确定的任务而言,静态SQL更具有高效性。...下面的示例,首先声明了两个复合类型以及复合变量,接下来为复合变量ename_table赋值,以形成动态SQL语句。

2.2K10

Oracle PLSQL语句基础学习笔记(上)

PL/SQL程序块PL/SQL引擎处理,ORACLE服务器SQL语句执行器处理pl/sql程序块SQL语句。...命名程序块可以出现在其他PL/SQL程序块的声明部分,这方面比较明显的是子程序,子程序可以执行部分引用,也可以异常处理部分引用。...变量一般都在PL/SQL块的声明部分声明PL/SQL是一种强壮的类型语言,这就是说引用变量前必须首先声明,要在执行或异常处理部分使用变量,那么变量必须首先在声明部分进行声明。...分号分隔每一条语句,使用赋值操作符:=或SELECT INTO或FETCH INTO给每个变量赋值,执行部分的错误将在异常处理部分解决,执行部分可以使用另一个PL/SQL程序块,这种程序块被称为嵌套块所有的...嵌套要注意的是变量,定义最外部程序块变量可以在所有子块中使用,如果在子块定义了与外部程序块变量相同的变量名,执行子块将使用子块定义的变量。子块定义的变量不能被父块引用。

2.7K10

【PLSQL编程基础】

PL/SQL编程基础】 语法: declare 声明部分,例如定义变量、常量、游标 begin 程序编写,SQL语句 exception 处理异常 end; / 正斜杠表示执行程序快...: 所有的变量都要求declare部分之中进行,可以定义的时候赋默认值,变量声明语法如下: 变量名[constant] 类型 [not null][:=value] declare v_resultA...使用%rowtype声明变量,可以定义表中一行记录的类型 运算符: 掌握变量声明和使用 掌握%type和%rowtype的使用 PL/SQL分支语句 if/else 循环: loop: 语法...in和out来返回数据, 语法如下:类型为numnber或者varchar不需要定义长度否则编译不能通过 CREATE [OR REPLACE] FUNCTION 过程名 (参数名[模式] nocopy...: oracle每个session都有独立的事务, 启动子事务 利用java调用子程序

81840

Oracle存储过程详解(一)

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 等待资源超时 基本语法 1....也许,是怕和oracle的存储过程的关键字as冲突的问题吧 2.存储过程,select某一字段,后面必须紧跟into,如果select整个记录,利用游标的话就另当别论了。...可以该语法之前,先利用select count(*) from 查看数据库是否存在该记录,如果存在,再利用select…into… 4.存储过程,别名不能和字段名称相同,否则虽然编译可以通过,但在运行阶段会报错

1.7K30

PLSQL编程基础简介及实践

普通SQL语句的使用上增加了编程语言的特点,所以PL/SQL就是把数据操作和查询语句组织PL/SQL代码的过程性单元,通过逻辑判断、循环等操作实现复杂的功能或者计算程序语言。...引擎执行PL/SQL过程性语句,然后将SQL语句发送给数据库服务器来执行,再将结果返回给执行端。 5、语法结构 1、PL/SQL组成:由3部分组成:声明部分、执行部分、异常处理部分。...使用记录数据类型变量,需要先在声明部分先定义记录的组成、记录的变量,然后执行部分引用该记录变量本身或其中的成员。...它可以处理多行记录,类似于高级的二维数组,使得可以pl/sql模仿其他数据库的表。...2、异常情况(exception)指在正常执行过程未预料的事件,程序块的异常处理预定义错误和自定义错误,运行PL/SQL一旦产生异常而没有指出如何处理,就会自动终止整个PL/SQL块的运行。

1.4K20

PLSQL --> 包重载、初始化

有关包的创建与管理请参考:PL/SQL --> 包的创建与管理 一、使用重载特性建立包头 ,具有重载特性的子程序必须使用不同的输入参数。同名函数返回值数据类型必须完全相同。...ORA-06512: at "SCOTT.EMP_PACKAGE", line 34 ORA-06512: at line 1 五、前置声明 前置声明指的是包体内,假定过程A调用了过程B,而B...END; END forward_pack; 六、函数纯度级别 Oracle函数可以SQL语句中调用,也可以作为表达式的一部分,基于函数的一些特殊性,包中使用SQL语句调用公共函数,同样也存...如何确保子程序调用游标采取顺序一致性性调用, 而不会出现获得重复的游标记录,下面给出的例子说明了包内游标一致性状态的使用。...v_ename emp.ename%TYPE; --定义用于存储游标结果的变量 PROCEDURE return1_3rows IS BEGIN OPEN cur; --第一个过程打开游标

63620

Oracle SQL 异常处理

Oracle返回的系统错误,系统不会自动触发,需要在声明部分定义。...而用户自定义异常以及预定义异常不回终止程序,但会终止该 PL/SQL 代码块,所以一个存储过程可以有多个 PL/SQL 代码块。...关于异常的语法及定义: 什么是异常: PL/SQL用异常和异常处理器来实现错误处理 Oracle中出现错误的情形通常分为编译错误(compile-time error)和运行时错误(run-time...异常在PL/SQL执行过程很可能出现 对异常如果不进行处理,异常可能会中断程序的运行 捕获异常的规则: 异常部分WHEN 子句没有数量限制 当异常抛出后,控制无条件转到异常处理部分 EXCEPTION...关键词开始异常处理部分 WHEN OTHERS 为最后的一条子句 异常块,只有一个句柄会处理异常 关于异常捕获的函数: SQLCODE 返回错误代码 SQLERRM 返回与错误代码关联的消息

60310

Java程序员的日常——存储过程知识普及

存储过程是保存可以接受或返回用户提供参数的SQL语句集合。日常的使用,经常会遇到复杂的业务逻辑和对数据库的操作,使用存储过程可以进行封装。...可以在数据库定义子程序,然后把子程序存储在数据库服务器,之后通过名称调用。 特点 1 提高性能 存储过程是预先编译过,进行优化后,存储SQL的内存,使用的时候不需要重新编译,提高工作效率。...为了提高存储过程的健壮性,避免运行错误,建立存储过程,应该包含异常处理的部分。...VALUE_ERROR 赋值变量长度不足以容纳实际数据 LOGIN_DENIED PL\SQL应用连接到oracle,提供了 不正确的用户名密码 NOT_LOGGED_ON PL\SQL应用程序没有连接...使用对象类型null对象上调用对象方法 STORAGE_ERROR 运行PL\SQL,超出内存空间 SYS_INVALIDE_ID 无效的ROWID字符串 TIMEOUT_ON_RESOURCE

1.5K80

PLSQL --> 包的创建与管理

PL/SQL类型包括table类型,record类型。PL/SQL项则包括游标,游标 变量PL/SQL子程序包括过程,函数等。可以说包可谓是包罗万象。是所有PL/SQL相关资源的汇总。...一、包的组成与创建语法 包头:用于定义包的公共组件,如函数头,过程头,游标等以及常量,变量等。包头中定义的公共组件可以包内引用,也可以被其 它子程序引用。...如上面的例子对包内私有函数validate_deptno进行了直接调用 对于包的公共对象,既可以包内调用,也可以由其他应用程序调用。...任意包头的变更,需要重新编译该包内的子程序 包头内定义的任意公共对象可以被任意内部或外部子程序调用 包体内的私有对象仅仅能被该包体内的子程序调用 六、更多参考 有关SQL请参考 SQL 基础...CONNECT BY PRIOR) 有关PL/SQL请参考 PL/SQL --> 语言基础 PL/SQL --> 流程控制 PL/SQL --> 存储过程 PL/SQL --> 函数 PL/SQL

79320

PLSQ编程

对这种异常情况的处理,需要用户程序定义,然后由ORACLE自动将其引发。用户定义(User_define) 错误 程序执行过程出现编程人员认为的非正常情况。...-1---ORA-00001: 违反唯一约束条件 (SCOTT.PK_EMP) 游标 PL/SQL 程序,对于处理多行记录的事务经常使用游标来实现 为了处理 SQL 语句,ORACLE 必须分配一片叫上下文...PL/SQL 程序不能用OPEN 语句重复打开一个游标。 提取游标数据 就是检索结果集合的数据行,放入指定的输出变量。...PL/SQL块,作为数据库对象保存在数据库。...主要有四类:过程:执行特定操作,无返回值;函数:执行复杂操作,有返回值包:逻辑上相关的过程和函数的组合体触发器:事件触发,执行相应的操作 ORACLE 提供可以把PL/SQL 程序存储在数据库,并可以在任何地方来运行它

1.5K10

Oracle PLSQL基础语法学习15:静态表达式

这个表达式在编译可以确定其值的表达式,即它不包括字符比较、变量或函数调用,在运行时是不可改变的,常常在PL/SQL中用于初始化变量、常量、参数等。...PL/SQL,静态表达式可以使用常量、字面量、枚举类型等,可以使用任意组合来描述目标值。...静态常量 一个包规范声明静态常量的语法是: constant_name CONSTANT data_type := static_expression; 静态表达式的类型必须与data_type相同...这种条件编译语句通常用于开发和调试过程,在编译根据一些条件选择性地编译特定的代码块,以提高代码的可读性和效率。...存储过程的主体,使用 EXECUTE IMMEDIATE 语句来执行了一个 SQL 查询,查询的是名为 table1 的表的所有数据。

14750
领券