[size=small]select into不可乎视的问题 [/size]
我们知道在pl/sql中要想从数据表中向变量赋值,需要使用select into 子句。
但是它会带动来一些问题,如果查询没有记录时,会抛出no_data_found异常。
如果有多条记录时,会抛出too_many_rows异常。
这个是比较糟糕的。一旦抛出了异常,就会让过程中断。特别是no_data_found这种异常,没有严重到要让程序中断的地步,可以完全交给由程序进行处理。
For Exaple:
create or replace procedure procexception(p varchar2)
as
v_postype varchar2(20);
begin
select pos_type into v_postype from pos_type_tbl where 1=0;
dbms_output.put_line(v_postype);
end;
处理这个有三个办法
1. 直接加上异常处理。 (这样做换汤不换药,程序仍然被中断。可能这样不是我们所想要的。 )
create or replace procedure procexception(p varchar2)
as
v_postype varchar2(20);
begin
select pos_type into v_postype from pos_type_tbl where 1=0;
dbms_output.put_line(v_postype);
exception
when no_data_found then
dbms_output.put_line('没找到数据');
end;
2. select into做为一个独立的块,在这个块中进行异常处理 (这是一种比较好的处理方式了。不会因为这个异常而引起程序中断。 )
create or replace procedure procexception(p varchar2)
as
v_postype varchar2(20);
begin
begin
select pos_type into v_postype from pos_type_tbl where 1=0;
dbms_output.put_line(v_postype);
exception
when no_data_found then
v_postype := '';
end;
dbms_output.put_line(v_postype);
end;
3.使用游标(这样就完全的避免了no_data_found异常。完全交由程序员来进行控制了。 )
create or replace procedure procexception(p varchar2)
as
v_postype varchar2(20);
cursor c_postype is select pos_type from pos_type_tbl where 1=0;
begin
open c_postype;
fetch c_postype into v_postype;
close c_postype;
dbms_output.put_line(v_postype);
end;
分享到:
相关推荐
在Oracle中,游标对于实现复杂的数据操作和控制流程至关重要,特别是在存储过程和触发器中。 1. **游标简介** 游标提供了一种方式来遍历查询结果集,并允许应用程序一次处理一行。游标有显式和隐式两种类型。显式...
游标是Oracle数据库中一个重要的概念,它是一种在内存中用于存储SQL查询结果的临时工作区域。使用游标可以方便地访问查询结果集中的每一行,这对于处理大量数据是非常有用的。游标主要分为两种类型:显式游标和隐式...
Oracle数据库中的游标是PL/SQL编程中一种重要的控制结构,它允许程序逐行处理查询结果,而不是一次性处理所有结果。游标对于处理大量数据或需要根据每行数据执行不同操作的情况非常有用。以下是关于Oracle游标使用的...
本套教程全面覆盖了Oracle数据库的核心编程元素,包括存储过程、函数、触发器、异常处理、游标和存储包,这些都是数据库开发和管理中的关键概念。 首先,我们来详细了解存储过程。存储过程是一组预编译的SQL语句,...
T100ERP调用ORACLE 数据库存储过程(返回值为游标类型)处理为JSON和数组方法
在Oracle数据库中,存储过程、游标和函数是非常重要的组成部分,它们为数据库管理提供了强大的编程能力。通过学习这些概念,我们可以更加灵活地管理和操作数据库数据。 ##### 1.1 存储过程 存储过程是一组预先编译...
Oracle数据库是全球广泛使用的大型关系型数据库管理系统,尤其在企业级应用中占据重要地位。这份“Oracle数据库培训资料-PPT”包含了一系列的PPT文件,旨在帮助学习者深入理解和掌握Oracle数据库的相关知识。以下是...
在Oracle数据库中,存储过程是预编译的SQL和PL/SQL代码集合,它们可以执行特定的任务并提高数据库性能。游标是处理单行或多行数据集的一种机制,允许我们遍历结果集并逐行操作。在本例中,“Oracle存储过程实例使用...
Oracle 存储过程游标是指在 Oracle 数据库中使用游标来实现对结果集的处理和操作。游标可以分为静态游标和REF游标两种类型。静态游标是指结果集已经确实(静态定义)的游标,可以进一步分为隐式游标和显示游标。隐式...
在Oracle数据库中,存储过程是一种预编译的SQL代码块,可以接受参数、执行复杂的数据库操作并返回结果。它们提供了一种将业务逻辑封装在数据库内部的方法,从而提高应用程序的性能和安全性。本文将深入探讨如何在...
在Java编程中,我们通常通过JDBC(Java Database Connectivity)来与Oracle数据库交互,其中游标扮演着关键角色。这篇文档《Oracle 游标使用大全》应该涵盖了关于Oracle游标的各种使用方法和最佳实践。 1. **游标的...
本文将详细介绍游标的基本概念、类型、声明、打开、读取和关闭,存储过程的定义和使用,以及触发器的基本概念和创建。 游标 游标是Oracle数据库中的一种机制,用于从结果集中读取数据。游标可以分为两种类型:显式...
“Oracle数据库游标使用大全.pdf”这份文档可能详细介绍了以上内容,并提供了具体的示例代码和实践技巧,帮助读者深入理解和应用Oracle数据库游标。通过学习和实践这些知识,开发者能够更好地掌握Oracle数据库编程,...
本示例展示了如何使用 CallabledStatement 来调用 Oracle 存储过程,并实现 IN OUT 参数和游标类型参数的使用。这种方法可以提高应用程序的性能和安全性。同时,游标类型参数的使用可以实现数据的批量处理,提高应用...
在Oracle数据库中,游标(Cursor)是一种非常重要的编程工具,尤其在处理复杂的数据操作时。游标允许我们逐行处理查询结果,这对于迭代、条件判断或者数据更新等任务非常实用。下面,我们将深入探讨Oracle游标的使用...
在Java编程中,调用Oracle数据库的存储过程并处理返回的游标是一项常见的任务。Oracle存储过程可以封装复杂的业务逻辑,而游标则用于在结果集上进行迭代,特别是当结果集太大,不适合一次性加载到内存时。下面将详细...
Oracle数据库中的存储过程是数据库应用程序的重要组成部分,它们允许开发者封装复杂的业务逻辑,提高代码复用性和执行效率。在Java应用程序中调用Oracle存储过程是一种常见的数据访问方式,它能够利用数据库的强大...
Oracle数据库存储过程触发器包是使用事例,可以说经典
Oracle数据库是全球广泛使用的大型关系型数据库管理系统,其在企业级应用中占据着重要的地位。这篇学习日记将为你提供一个实用性极强的Oracle学习总结,涵盖了基础使用、常用命令、数据库配置、用户管理和权限管理等...
在Oracle数据库中,游标(Cursor)是一种非常重要的概念,特别是在编写存储过程和函数时。游标允许我们处理单行或多行数据集,一次处理一行,这样可以进行精细化的数据操作。在本篇讨论中,我们将深入理解Oracle游标...