导常处理
1、什么是异常
在PL/SQL中的一个警告或错误的情形都被称为异常。包括:编译时刻错误和运行时刻
错误。
2、异常分类
系统异常
自定义异常
3、异常结构
EXCEPTION
WHEN...THEN
例子1:
declare
test varchar2(10);
begin
select a into test from abc where a='a';
dbms_output.put_line(test);
exception
when no_data_found then
dbms_output.put_line('没有数据');
end;
/
常见系统异常
DUP_VAL_ON_INDEX 向有唯一约束的表中插入重复行
NO_DATA_FOUND 在一个SELECT INTO语句中无返回值
TOO_MANAY_ROWS SELECT INTO 语句返回了多行
VALUE_ERROR 一个算法、转换、截断或大小约束发生错误
ZERO_DIVIDE 发生被零除
例子:自定义异常
declare
tname varchar2(10);
e exception;
begin
select a into tname from abc where b='123';
if tname<>'s' then
raise e;
end if;
dbms_output.put_line(tname);
exception
when e then
dbms_output.put_line('错误,不是需要的数据');
end;
/
复合变量:记录
什么是记录
记录是由几个相关值构成的复合变量,常用于支持SELECT语句的返回值。使用记录可以
将一行数据看成一个单元进行处理,而不必将每一列单独处理。
记录的声明
TYPE type_name IS RECORD(
Variable_name datetype[,
Variable_name datetype[,
...
);
Real_name type_name;
例子:
declare
type myrecord is record(
a varchar2(10),
b varchar2(100));
real_record myrecord;
begin
select a,b into real_record from abc;
dbms_output.put_line(real_record.a||','||real_record.b);
end;
/
例子2:%type 对应表中的字段类型
declare
type myrecord is record(
a abc.a%type,
b varchar2(100));
real_record myrecord;
begin
select a,b into real_record from abc;
dbms_output.put_line(real_record.a||','||real_record.b);
end;
/
例子3:%rowtype 对应表中的所有字段类型
declare
real_record abc%rowtype;
begin
select * into real_record from abc;
dbms_output.put_line(real_record.A||','||real_record.B);
end;
/
游标
1、什么是游标
游标是一个种PL/SQL控制结构;可以对sql语句的处理进行显式控制,便于对表的行数扰
逐条进行处理
2、游标分类
显式 隐标
3、游标的属性
%FOUND
%ISOPEN
%NOTFOUND
%ROWCOUNT
例子1:%found
declare
cursor mycur is
select * from abc;
myrecord abc%rowtype;
begin
open mycur;
fetch mycur into myrecord;
while mycur%found loop
dbms_output.put_line(myrecord.A||','||myrecord.B);
fetch mycur into myrecord;
end loop;
close mycur;
end;
/
例子2:%nofound
declare
cursor cur_para(id varchar2) is
select A from abc where A=id;
t_name abc.A%type;
begin
open cur_para('abc');
loop
fetch cur_para into t_name;
exit when cur_para%notfound;
dbms_output.put_line(t_name);
end loop;
close cur_para;
end;
/
例子3:
declare
cursor cur_para(id varchar2) is
select A from abc where A=id;
begin
dbms_output.put_line('*********结果集为:******');
for cur in cur_para('abc') loop
dbms_output.put_line(cur.A);
end loop;
end;
/
例子4:%isopen
declare
t_name abc.A%type;
cursor cur(id varchar2) is
select A from abc where A=id;
begin
if cur%isopen then
dbms_output.put_line('游标已经被打开!');
else
open cur('abc');
end if;
fetch cur into t_name;
close cur;
dbms_output.put_line(t_name);
end;
/
例子4:%rowcount
declare
t_name abc.A%type;
cursor mycur is
select A from abc;
begin
open mycur;
loop
fetch mycur into t_name;
exit when mycur%notfound or mycur%notfound is null;
dbms_output.put_line('游标mycur的rowcount是:'||mycur%rowcount);
end loop;
close mycur;
end;
/
例子5:update数据
declare
cursor cur is
select A from abc for update;
text varchar2(10);
begin
open cur;
fetch cur into text;
while cur%found loop
update abc set A=A||'_t' where current of cur;
fetch cur into text;
end loop;
close cur;
end;
/
例子6:显示游标数据
begin
for cur in(select A from abc) loop
dbms_output.put_line(cur.A);
end loop;
end;
/
分享到:
相关推荐
- **EXCEPTION块**:用于捕获和处理异常,可以定义自定义异常并使用RAISE语句抛出。 4. **PL/SQL与SQL的交互** - **嵌套SQL**:在PL/SQL代码中执行SQL查询,如SELECT INTO语句。 - **游标**:用于处理查询结果集...
在Oracle数据库中,PL/SQL提供了丰富的控制结构,如循环、条件判断,以及异常处理机制,使得开发者能够编写复杂的业务逻辑。例如,`IF...THEN...ELSIF...ELSE`语句用于实现条件分支,`WHILE`和`FOR`循环则可以处理...
3. **异常处理**:在PL/SQL中,异常处理是通过EXCEPTION关键字实现的,用于捕获并处理运行时错误。手册会详细解释如何定义和使用预定义及自定义异常。 4. **数据库操作**:PL/SQL与Oracle数据库紧密集成,可以执行...
3. **游标**:PL/SQL支持游标,允许用户逐行处理查询结果,这对于处理大量数据时非常有用。 4. **事务管理**:PL/SQL提供BEGIN、COMMIT、ROLLBACK等语句来管理事务,确保数据的一致性和完整性。 5. **异常处理**:...
Pl/SQL简介 控制结构 复合数据类型 游标 异常 创建存储过程 函数的概念 包的概念 触发器概念
ORACLE PL/SQL是从入门到精通的专业知识,涵盖了数据库开发与管理的多个方面,包括触发器、过程、函数、软件包、异常处理、游标、循环、分支、变量使用、数据库安装等关键知识点。 触发器是数据库中用来保证数据...
PL/SQL是Oracle数据库的内置编程语言,由块构成,包括声明部分、执行部分和异常处理部分。块可以是匿名块(即直接在SQL*Plus或其他工具中编写的一次性执行的代码),也可以是存储过程、函数、触发器、包等可重用的...
6. **游标**:PL/SQL中的游标允许逐行处理查询结果,是处理复杂数据操作的重要工具。 7. **记录类型和变量**:PL/SQL支持自定义记录类型和变量,使得可以创建更贴近业务需求的数据结构。 这个"PL/SQL安装包"可能...
- **块结构**:PL/SQL程序通常被组织成块,每个块由声明部分、执行部分和异常处理部分组成。 - **子程序**:包括存储过程和函数。这些子程序可以被其他PL/SQL代码调用,实现代码复用和模块化。 - **包**:包是一种...
首先,PL/SQL是一种过程化语言,它允许用户定义变量、控制流程(如循环、条件语句)、处理异常,并且可以嵌入SQL查询,进行数据的增删改查操作。通过使用PL/SQL,数据库管理员和开发者可以更高效地管理和维护数据库...
5. **异常处理**:PL/SQL提供了异常处理机制,通过BEGIN...EXCEPTION块来捕获和处理运行时错误,如NO_DATA_FOUND、TOO_MANY_ROWS和OTHERS。 6. **包(PACKAGE)**:包是将相关的常量、变量、过程和函数组合在一起的...
6. **异常处理**:PL/SQL提供了一个强大的异常处理机制,允许你定义和捕获运行时错误,从而编写健壮的代码。 7. **游标 FOR 循环**:这是一种简化版的游标使用,可以方便地遍历查询结果集,无需显式打开、提取和...
3. **游标**:在PL/SQL中如何使用游标处理单行或多行数据,以及游标的声明、打开、关闭和循环遍历。 4. **记录类型**:定义和操作记录类型,用于处理动态或不确定的数据结构。 5. **集合类型**:包括数组(PLS_...
本章节主要介绍了 PL/SQL 程序设计的基础知识,包括 PL/SQL 的优点、运行 PL/SQL 程序、PL/SQL 块结构、PL/SQL 基本语法、PL/SQL 处理流程、异常处理、游标、存储过程和函数、触发器等。 PL/SQL 的优点包括: * ...
PL/SQL全称为“Procedural Language/Structured Query Language”,它提供了丰富的控制结构和异常处理机制,使得开发者能够编写复杂的数据库操作程序。 **PL/SQL的特点** 1. **集成性**:PL/SQL与Oracle数据库紧密...
书中会展示如何使用RAISE、EXCEPTION、WHENEVER等语句来捕获和处理异常。 6. **包**:包是组织PL/SQL代码的一种有效方式,它可以包含过程、函数和变量,提供封装和模块化的特性。通过包,可以隐藏实现细节,只暴露...
### PL/SQL编程基础知识 #### 一、PL/SQL简介 PL/SQL(Procedural Language for SQL)是一种过程化语言,它结合了SQL的数据操纵功能和过程化语言的控制结构,使用户能够灵活地控制数据操作流程。作为Oracle数据库...
10. **错误处理和日志记录**:讲解如何有效地捕获和处理异常,以及如何实现日志记录以增强程序的健壮性。 11. **数据库链接(DBLINK)**:介绍如何通过DBLINK在不同数据库实例间通信,实现跨库操作。 12. **高级PL...
- PL/SQL结构:了解块的概念,包括声明部分、执行部分和异常处理部分。 - 数据类型:熟悉PL/SQL内置的数据类型,如NUMBER、VARCHAR2、DATE等。 - 变量和常量:声明和使用变量,以及定义常量。 - 控制流程语句:...
2. **流程控制**:PL/SQL提供了多种流程控制结构,如条件语句(IF-THEN-ELSIF-ELSE)、循环(WHILE、FOR、LOOP)、CASE表达式,以及异常处理(EXCEPTION)。这些结构使得程序可以根据不同条件执行不同的代码段。 3....