大家好,我在创建一个product_cur_procedure的过程时,过程创建正常,如
..........
...........
34 end loop;
35 close cur_category;
36 end;
37 /过程已创建。
但在执行时,总显示
SQL> exec product_cur_procedure;
BEGIN product_cur_procedure; END;*
第 1 行出现错误:
ORA-01403: 未找到任何数据
ORA-06512: 在 "SCOTT.PRODUCT_CUR_PROCEDURE", line 16
ORA-06512: 在 line 1这是怎么回事呢?那个line 16 是什么意思呢?
..........
...........
34 end loop;
35 close cur_category;
36 end;
37 /过程已创建。
但在执行时,总显示
SQL> exec product_cur_procedure;
BEGIN product_cur_procedure; END;*
第 1 行出现错误:
ORA-01403: 未找到任何数据
ORA-06512: 在 "SCOTT.PRODUCT_CUR_PROCEDURE", line 16
ORA-06512: 在 line 1这是怎么回事呢?那个line 16 是什么意思呢?
解决:检查你的游标定义是否正确,或在异常处理部分处理
2 as
3 cur_pro_cate productinfo.category%type; --存放产品类型编码
4 cur_cate_name categoryinfo.categoryname%type; --存放产品类型名称
5 cur_proinfo productinfo%rowtype; --存放productinfo行记录
6
7 cursor cur_category
8 is
9 select category from productinfo group by category;
10
11 begin
12 open cur_category;
13 loop
14 fetch cur_category into cur_pro_cate;
15 exit when cur_category%notfound;
16 select categoryinfo.categoryname into cur_cate_name
--16
17 from categoryinfo
18 where categoryid=cur_pro_cate;
19 if sql%found then
20 dbms_output.put_line('----------------------------------------')
;
21 dbms_output.put_line(cur_cate_name||':');
22
23 end if;
24 for yinshi in
25 (select * from productinfo where category=cur_pro_cate)
26
27 loop
28 dbms_output.put_line('产品名称'||yinshi.productname||
29 '产品价格'||yinshi.productprice||
30 '产品数量'||yinshi.quantity);
31
32 end loop;
33
34 end loop;
35 close cur_category;
36 end;
37 /
过程已创建。
SQL> exec product_cur_procedure;
BEGIN product_cur_procedure; END;
*
第 1 行出现错误:
ORA-01403: 未找到任何数据
ORA-06512: 在 "SCOTT.PRODUCT_CUR_PROCEDURE", line 16
ORA-06512: 在 line 1
是这样的的。
select categoryinfo.categoryname into cur_cate_name
from categoryinfo
where categoryid=cur_pro_cate;
EXCEPTION
WHEN NO_DATA_FOUND THEN
cur_cate_name:='NOT FOUND';
END;
dbms_output.put_line('----------------------------------------');
dbms_output.put_line(cur_cate_name||':');
可能是这句导致的
select categoryinfo.categoryname into cur_cate_name
from categoryinfo
where categoryid=cur_pro_cate;