当执行了异常处理时,若发生了异常,则会立即跳转到异常块中,这和java是一样的,可以选择捕获NO_DATA_FOUND异常然后外抛。 createorreplacefunctionfn_test(c_xmvarchar)returnvarchar2asV_P1varchar(10);beginselectnameintoV_p1fromt1where1=2;--NO_DATA_FOUND,会立即跳转到exception块,不再继续执行select1/0into...
1.首先创建一个表lengzijiantest,表中只有一个字段f_id 1 2 3 4 5 [cpp] CREATETABLELENGZIJIANTEST ( F_ID NUMBERNOTNULL ) 2.插入一条数据 1 2 [cpp] insertintolengzijiantestvalues(1) 3.现在表里面只有一条数据,值为1; 4.写入如下命令 1 2 3 4 5 6 7 8 9 10 11 12 13 [sql] DECLARE...
首先介绍no_data_found的基本概念和使用场景,并提供一些示例代码来演示其用法。接着讨论如何正确处理no_data_found异常,包括使用异常处理块捕获异常和使用存储过程进行异常处理的方法。此外,我们还将与其他Oracle异常如too_many_rows进行比较分析,并给出正确区分和处理这两种异常情况的建议。最后,在结论部分总结no_data_...
在Oracle中,NO_DATA_FOUND是一个常见的异常,它发生在执行SELECT INTO语句时未找到任何数据的情况下。为了处理这种情况,我们可以使用PL/SQL的BEGIN ... EXCEPTION ... END块来捕获这个异常,并在捕获到异常后执行多个判断条件,最终决定程序的行为,包括终止程序并返回结果。 1. 理解no_data_found异常 NO_DATA_FOUND...
1. 普通的异常捕获的方式 2. 通过表关联left join的方式 3. 通过max的方式 方法1 语法: BEGIN SELECT col INTO v_col FROM t_table WHERE condition EXCEPTION WHEN NO_DATA_FOUND THEN do something END; 方法2 语法: select nvl(b.col,自定义的默认值) into v_col ...
5.因为数据库中只有1的数据,该条语句会打印出“找不到数据”;如果把sql写成如下方式,则不会打印“找不到数据” 6.具体原因是由于在sql中使用了聚合函数,当使用聚合函数时,NO_DATA_FOUND是不起作用的,在这一点上也吃了小亏,不过问题不大,在此记录下问题。
oracle数据库存储过程中NO_DATA_FOUND不起作用 1.首先创建一个表lengzijiantest,表中只有一个字段f_id ? 1 2 3 4 5 [cpp] CREATETABLELENGZIJIANTEST ( F_ID NUMBERNOTNULL ) 2.插入一条数据 ? 1 2 [cpp] insertintolengzijiantestvalues(1) ...
创建NO_DATA_FOUND的存储过程: CREATE OR REPLACE PROCEDURE PRO_NO_DATA_FOUND(USER_ID IN INTEGER) AS V_AGE TB_USER.USER_AGE%TYPE; V_NAME TB_USER.USER_NAME%TYPE; BEGIN SELECT USER_NAME, USER_AGE INTO V_NAME, V_AGE FROM TB_USER WHERE ID=USER_ID; ...
在PL/SQL程序中,通过异常来控制程序的流程是很正常的。只要出现的异常不属于功能性的或逻辑上的就没什么不好。严格地说NO_DATA_FOUND不能算异常。不过你的select1语句可以合并为一行,如下:SELECT C.INTERFACE, C.STATE INTO OUTINTERFACE,DBSTATE FROM F_TRADETRAN C WHERE C.SVRTYPE=INSVRTYPE ...
因为你执行的是DML语句,update,delete语句也不会触发no_data_found语句 当执行insert into ...select 语句时,没有返回记录的话会出现插入了0条记录的提示 只有执行select * into 语句的时候,没数据返回则报no_data_found