3.可以用is 也可以用 as2.可以使用,只要游标可以检索到数据.可以正常使用.1.出错的代码是什么?帖出来看看.

解决方案 »

  1.   

    check_bom(v_SID,in_pid,in_flag,out_result);过程名错了,你定义的是checkbom
    过程里可以使用游标取到的数据
    as和is没有什么区别,都是可以的
      

  2.   

    能贴出错误号么?过程里当然可以用游标的数据is 和 as 的用法是不一样的,看看PL/SQL的语法就知道了,is是说明下面开始是函数或者过程的实现。而 as是用在定义列别名的。
      

  3.   

    过程里不可以去调一个包的名称,应该是包里面的过程(过程定义要包含在包头里),游标的定义写在过程里,试试
    CREATE OR REPLACE  PACKAGE BODY "aaa"."CHECK_BOM"    as
     
      procedure checkbom(in_sid in table.SID%type,
                         in_pid in table.PID%type,
                         in_flag in table.flag%type,
                         out_result out boolean)
      as
         cursor temp is
      select sid,pid from item_bom
       where pid=in_sid
       and flag=in_flag;
      begin
        open temp;
        out_result:=true;
        loop
          fetch temp into v_SID ,v_PID ;
          if v_SID=in_pid then
            out_result:=false;
            RAISERROR ('产品结构有首尾相连,产生循环。', 15, 1);
            exit;
          else
            checkbom(v_SID,in_pid,in_flag,out_result);
          end if;  
        exit when temp%nofound;
        end loop;  
        close temp;
      end;
    end;
      

  4.   

    谢谢各位!
    执行过程和错误代码如下:SQL> declare
      2    out_result boolean;
      3  begin
      4    out_result:=false;
      5    Check_bom.checkbom('123456789012','1234567890123456','000001',out_result);
      6  end;
      7  /
      Check_bom.checkbom('123456789012','1234567890123456','000001',out_result);
      *
    ERROR 位于第 5 行:
    ORA-06550: 第 5 行, 第 3 列:
    PLS-00905: 对象 aaa.CHECK_BOM 无效
    ORA-06550: 第 5 行, 第 3 列:
    PL/SQL: Statement ignored根据错误代码来看似乎是说我写的包里有错误
      

  5.   

    to qiaozhiwei(乔)
    兄台说的对,的确错了^_^
    但是改过来还是不对,再帮看看,谢谢!
      

  6.   

    修改之后还是有些问题
    执行过程和报错如下SQL> edit
    已写入文件 afiedt.buf  1  declare
      2    out_result boolean;
      3  begin
      4    out_result:=false;
      5    Check_bom.checkbom('123456789012','1234567890123456','000001',out_result);
      6* end
    SQL> /
    declare
    *
    ERROR 位于第 1 行:
    ORA-06550: 第 7 行, 第 0 列:
    PLS-00103: 出现符号 "end-of-file"在需要下列之一时:
    ;
    <an identifier><a double-quoted delimited-identifier>
    符号 ";" 被替换为 "end-of-file" 后继续。各位再帮忙看看,分不够可以在加!谢谢!
      

  7.   

    还有一个问题:show errors 在什么时候可以用?谢谢!
      

  8.   

    show error不是show errors
    在编译的时候可以用.
    即创建存储过程之后.
      

  9.   


    LINE/COL ERROR
    -------- ------------------------------------------
    4/3      PLS-00360: 无主体的游标说明需要返回类型
    4/3      PL/SQL: Declaration ignored
    LINE/COL ERROR
    -------- -------------------------------------------------------
    0/0      PL/SQL: Compilation unit analysis terminated
    1/23     PLS-00905: 对象 MPSDEV.CHECK_BOM 无效
    1/23     PLS-00304: 如果没有说明,则无法编译 'CHECK_BOM' 主体