CREATE OR REPLACE PROCEDURE test_procedure (
)
AS
***********
BEGIN
IF ec = 'A' //-------------------------
THEN
*****************
IF *********
THEN
********
*********
ELSE
***********
END IF;
ELSE
//-------------------B
*************
END IF;
EXCEPTION
WHEN OTHERS
THEN
//------------------C
*****************
IF *********
THEN
**************
END IF;
END;当EC≠'A'时,为什么不是执行B而是执行C?
)
AS
***********
BEGIN
IF ec = 'A' //-------------------------
THEN
*****************
IF *********
THEN
********
*********
ELSE
***********
END IF;
ELSE
//-------------------B
*************
END IF;
EXCEPTION
WHEN OTHERS
THEN
//------------------C
*****************
IF *********
THEN
**************
END IF;
END;当EC≠'A'时,为什么不是执行B而是执行C?
照着楼上代码看
IF ec = 'A'
问题只有出现这句话上
EC类型问题可能性最高
出现异常的时候会从执行块中跳到异常处理块执行
不然是不会执行C的另外 你如何判断B没有执行?也许已经执行了而你没看到呢?或者执行了一半出现异常了呢?
最好可以把代码都贴出来看看呵呵 当然 如果出于保密性的话 那就算了
进去B去执行了,结果呢,B里面有错,就跑C那去啦!
EC='A'时,执行B,EC≠'A'时执行C。
所以才觉得奇怪。
)
AS
***********
BEGIN
IF ec = 'A' //-------------------------
THEN
*****************
IF *********
THEN
********
*********
ELSE
***********
END IF;
ELSE
//-------------------B
*************
END IF;
EXCEPTION
WHEN OTHERS
THEN
//------------------C
*****************
IF *********
THEN
**************
END IF;
END;
有可能在执行过程中抛出了异常。
所以,
select a //----在此处挂掉
into b
from tabel
这句sql无符合条件的记录,此时会抛出exception吗?
我的意思是:
select a
into b
from tabel
如果这句sql无符合条件的记录,是否会抛出Exception?
谢谢~
select into 语句要正确运行,必须保证有且只有一个查询结果。
没有会抛NO_DATA_FOUND异常,多于一条会抛
2112 错误: SELECT..INTO returns too many rows
谢谢~
难怪SQL中有rownum=1
还是因为偶对procedure的写法不会.
有没有相关的书籍介绍些给偶.
再次感谢~
或者 Oracle 10g PL/SQL 高级编程。
我这暂时没有电子版
呵呵,rownum=1跟这个没有关系啦,rownum是oracle的一个伪列,用来标识行号的。