刚接触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”,但是结果不显示出来,我想查看结果该如何执行啊?OraclePL/SQL

解决方案 »

  1.   

    Done in 0.015 Seconds--这个表示这个过程已经成功执行。你想查看结果,那就在你过程里面的对象去看,比如你在过程中插入了一条记录,那你就检查这个表是否已经成功插入一条记录。不知道你想查看的是什么结果?存储过程执行的结果?
      

  2.   

    DECLARE 
    TYPE BRANCH_CURSOR IS REF CURSOR;
    PBRANCH BRANCH_CURSOR;
    BEGIN
    PKG_BRANCH.BRANCH_LOADBYKEY(PBRANCH,'DL');
    END; 
    你这个只是返回了到游标里面,
    要出结果,还得 打开游标,fetch数据等。。
      

  3.   

    这个方法我知道,可以查询并显示结果。我是想用SQL语句的也试试
      

  4.   


    具体怎么fetch数据啊?我fetch数据的时候,它报“结果集变量或查询的返回类型不匹配”,谢谢
      

  5.   

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

  6.   


    就是打开SQL Window 窗口,然后写
    DECLARE 
    TYPE BRANCH_CURSOR IS REF CURSOR;
    PBRANCH BRANCH_CURSOR;
    BEGIN
    PKG_BRANCH.BRANCH_LOADBYKEY(PBRANCH,'DL');
    END; 
    这个去执行,不可以吗?管道+函数?我是初学者,还不知道怎么用
      

  7.   


    就是打开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; 
      

  8.   


    就是打开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类型)后,报出“结果集变量或查询的返回类型不匹配”
      

  9.   


    就是打开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。即你表里面查询出什么字段,你就定义什么变量类型,查询出几个字段,就定义几个变量。
      

  10.   


    就是打开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。即你表里面查询出什么字段,你就定义什么变量类型,查询出几个字段,就定义几个变量。
    我看到输出的内容了,谢谢!
    能否再请教您个问题,就是它这种只能这样输出结果,不能像直接查询出的结果那样,有列标题一样的显示结果集吗?还有就是为什么我查询语句中的所有字段必须放在INTO后面,我只INTO一个字段的时候就报错。
      

  11.   


    要像直接查询出结果那样, 用管道函数,自己google了解即可。。select....into  的语法,你得遵循。你也可以定义 type 复合类型之类的。。
      

  12.   


    就是打开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; 非常感谢您的回答!
    实在不好意思,刚才给您的分数给错了,下次给您吧!