`

PL/SQL 导常处理 游标

阅读更多

导常处理
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;
/

分享到:
评论

相关推荐

    oracle10g_pl/sql

    - **EXCEPTION块**:用于捕获和处理异常,可以定义自定义异常并使用RAISE语句抛出。 4. **PL/SQL与SQL的交互** - **嵌套SQL**:在PL/SQL代码中执行SQL查询,如SELECT INTO语句。 - **游标**:用于处理查询结果集...

    Oracle PL/SQL实战(待续)

    在Oracle数据库中,PL/SQL提供了丰富的控制结构,如循环、条件判断,以及异常处理机制,使得开发者能够编写复杂的业务逻辑。例如,`IF...THEN...ELSIF...ELSE`语句用于实现条件分支,`WHILE`和`FOR`循环则可以处理...

    pl/sql最新中文手册

    3. **异常处理**:在PL/SQL中,异常处理是通过EXCEPTION关键字实现的,用于捕获并处理运行时错误。手册会详细解释如何定义和使用预定义及自定义异常。 4. **数据库操作**:PL/SQL与Oracle数据库紧密集成,可以执行...

    一个对数据库的操作工具PL/SQLpl/sqL工具

    3. **游标**:PL/SQL支持游标,允许用户逐行处理查询结果,这对于处理大量数据时非常有用。 4. **事务管理**:PL/SQL提供BEGIN、COMMIT、ROLLBACK等语句来管理事务,确保数据的一致性和完整性。 5. **异常处理**:...

    pl/sql例题代码pl/sql例题代码pl/sql例题代码

    在PL/SQL中,我们可以编写存储过程、函数、触发器、游标和异常处理等。这些组件对于数据库的业务逻辑处理至关重要,可以提高数据操作的安全性,减少网络通信,同时提高性能。 在"plsql_day02"这个压缩包文件中,很...

    pl/sql笔记/sql笔记(游标创建存储过程)

    Pl/SQL简介 控制结构 复合数据类型 游标 异常 创建存储过程 函数的概念 包的概念 触发器概念

    PL/SQL安装包

    6. **游标**:PL/SQL中的游标允许逐行处理查询结果,是处理复杂数据操作的重要工具。 7. **记录类型和变量**:PL/SQL支持自定义记录类型和变量,使得可以创建更贴近业务需求的数据结构。 这个"PL/SQL安装包"可能...

    Oracle PL/SQL程序设计(第5版)(上下册)

    - **块结构**:PL/SQL程序通常被组织成块,每个块由声明部分、执行部分和异常处理部分组成。 - **子程序**:包括存储过程和函数。这些子程序可以被其他PL/SQL代码调用,实现代码复用和模块化。 - **包**:包是一种...

    PL/SQL 基本知识

    首先,PL/SQL是一种过程化语言,它允许用户定义变量、控制流程(如循环、条件语句)、处理异常,并且可以嵌入SQL查询,进行数据的增删改查操作。通过使用PL/SQL,数据库管理员和开发者可以更高效地管理和维护数据库...

    PL/SQL入门到精通书的源代码

    6. **异常处理**:PL/SQL提供了一个强大的异常处理机制,允许你定义和捕获运行时错误,从而编写健壮的代码。 7. **游标 FOR 循环**:这是一种简化版的游标使用,可以方便地遍历查询结果集,无需显式打开、提取和...

    Oracle PL/SQL实例编程(PL/SQL经典书籍)

    5. **异常处理**:PL/SQL提供了异常处理机制,通过BEGIN...EXCEPTION块来捕获和处理运行时错误,如NO_DATA_FOUND、TOO_MANY_ROWS和OTHERS。 6. **包(PACKAGE)**:包是将相关的常量、变量、过程和函数组合在一起的...

    Oracle Database 12c PL/SQL开发指南 实例源代码

    3. **游标**:在PL/SQL中如何使用游标处理单行或多行数据,以及游标的声明、打开、关闭和循环遍历。 4. **记录类型**:定义和操作记录类型,用于处理动态或不确定的数据结构。 5. **集合类型**:包括数组(PLS_...

    Oracle数据库实用教程第三章 PL/SQL程序设计.pptx

    本章节主要介绍了 PL/SQL 程序设计的基础知识,包括 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数据库紧密...

    Oracle PL/SQL 实例精解(第4版涵盖Oracle 11g)+源码脚本

    书中会展示如何使用RAISE、EXCEPTION、WHENEVER等语句来捕获和处理异常。 6. **包**:包是组织PL/SQL代码的一种有效方式,它可以包含过程、函数和变量,提供封装和模块化的特性。通过包,可以隐藏实现细节,只暴露...

    PL/SQL编程基础知识

    ### PL/SQL编程基础知识 #### 一、PL/SQL简介 PL/SQL(Procedural Language for SQL)是一种过程化语言,它结合了SQL的数据操纵功能和过程化语言的控制结构,使用户能够灵活地控制数据操作流程。作为Oracle数据库...

    Oracle PL/SQL专家指南-高级PL/SQL解决方案的设计与开发

    10. **错误处理和日志记录**:讲解如何有效地捕获和处理异常,以及如何实现日志记录以增强程序的健壮性。 11. **数据库链接(DBLINK)**:介绍如何通过DBLINK在不同数据库实例间通信,实现跨库操作。 12. **高级PL...

    pl/sql 学习资料

    - PL/SQL结构:了解块的概念,包括声明部分、执行部分和异常处理部分。 - 数据类型:熟悉PL/SQL内置的数据类型,如NUMBER、VARCHAR2、DATE等。 - 变量和常量:声明和使用变量,以及定义常量。 - 控制流程语句:...

    Oracle PL/SQL学习官方教材

    2. **流程控制**:PL/SQL提供了多种流程控制结构,如条件语句(IF-THEN-ELSIF-ELSE)、循环(WHILE、FOR、LOOP)、CASE表达式,以及异常处理(EXCEPTION)。这些结构使得程序可以根据不同条件执行不同的代码段。 3....

    oracle 中 pl/sql 只是学习方法

    5. **异常处理**:PL/SQL的异常处理机制允许我们在遇到错误时执行特定的代码块,通过RAISE语句自定义异常,或者使用预定义的系统异常。 6. **事务管理**:在PL/SQL中,可以使用BEGIN、COMMIT、ROLLBACK语句进行事务...

Global site tag (gtag.js) - Google Analytics