日期:2014-05-17  浏览次数:20875 次

Oracle执行存储过程问题
刚接触Oracle,初学者遇到以下问题,请求帮助,谢谢了!

在PL/SQL中执行以下存储过程

DECLARE 
TYPE BRANCH_CURSOR IS REF CURSOR;
PBRANCH BRANCH_CURSOR;
BEGIN
PKG_BRANCH.BRANCH_LOADBYKEY(PBRANCH,'DL');
END; 

按执行按钮只显示“Done in 0.015 Seconds”,但是结果不显示出来,我想查看结果该如何执行啊?
Oracle PL/SQL

------解决方案--------------------
Done in 0.015 Seconds--这个表示这个过程已经成功执行。你想查看结果,那就在你过程里面的对象去看,比如你在过程中插入了一条记录,那你就检查这个表是否已经成功插入一条记录。

不知道你想查看的是什么结果?存储过程执行的结果?
------解决方案--------------------
引用:
Quote: 引用:

Quote: 引用:

Quote: 引用:

直接sql语句出结果?存储过程不行。
用 管道+函数吧。。


就是打开SQL Window 窗口,然后写
DECLARE 
TYPE BRANCH_CURSOR IS REF CURSOR;
PBRANCH BRANCH_CURSOR;
BEGIN
PKG_BRANCH.BRANCH_LOADBYKEY(PBRANCH,'DL');
END; 
这个去执行,不可以吗?

管道+函数?我是初学者,还不知道怎么用


这个我在3#已经说的很清楚了。

DECLARE 
TYPE BRANCH_CURSOR IS REF CURSOR;
PBRANCH BRANCH_CURSOR;
BEGIN
PKG_BRANCH.BRANCH_LOADBYKEY(PBRANCH,'DL');

--
open PBRANCH;
loop
fetch PBRANCH into .....
exit when PBRANCH %notfound;
dbms_output.put_line('.....');
end loop;

END; 



fetch PBRANCH into 中跟什么类型的参数?得在declare中定义是吧?
但是我定义之后(VARCHAR类型)后,报出“结果集变量或查询的返回类型不匹配”


是的,变量都在declare中定义。INTO后面跟变量,假设你查询的表有4个字段,a varchar2(40),b number,c date,d varchar2(80)。那么你的变量定义为v_a varchar2(40),v_b number,v_c date,v_d varchar2(80),然后fetch PBRANCH into v_a,v_b,v_c,v_d。即你表里面查询出什么字段,你就定义什么变量类型,查询出几个字段,就定义几个变量。