v_seq number:=1;
你的缺省值语法也有问题

解决方案 »

  1.   

    create or replace package body Alan_Test_PKG is
      FUNCTION FUNTest2 RETURN NUMBER  IS    V_SEQ NUMBER DEFAULT 1;  BEGIN       RETURN V_SEQ;  END FUNTest2;
      procedure PROC_Test  IS       CURSOR CUR1 IS SELECT * FROM tab WHERE id=63;  BEGIN       FOR CURR IN CUR1 LOOP            FUNTest2();       END LOOP ;  END PROC_Test;
      
      end;
    1.必须要定义包头才行
    2.在包里面的每个函数或者存储过程,  end 需要end当前的函数或者存储过程。 (忘了这是不是必须的了。 但是 出于代码可读性,也建议这么做)
    3. table 好像是关键字吧?
      

  2.   


                FUNTest2();   //  报错
    -- 这句, function 是返回值的,你直接调整用一个函数是不可以的,应该写成如下形式select             FUNTest2() into  myvar from dual -- 或myvar :=             FUNTest2();   
      

  3.   

    create or replace package   Alan_Test_PKG is
       FUNCTION FUNTest2 RETURN NUMBER;
      procedure PROC_Test;
      end;
      

  4.   


    create or replace package body Alan_Test_PKG is
      FUNCTION FUNTest2 RETURN NUMBER  IS    V_SEQ NUMBER DEFAULT 1;  BEGIN       RETURN V_SEQ;  END FUNTest2;
      procedure PROC_Test  IS       CURSOR CUR1 IS SELECT * FROM tab WHERE id=63;  BEGIN       FOR CURR IN CUR1 LOOP            FUNTest2();       END LOOP ;  END PROC_Test;
      
      end;1.必须要定义包头才行,定义
    2.在包里面的每个函数或者存储过程,end 需要end当前的函数或者存储过程。 
      

  5.   

    楼主的程序有几个错误:
    1.没有定义包头
    2.select  *from table where id =63;中table是关键字
    3.调用函数 时必须有变量来接收返回值,
    例如:declare
    vars number;
    begin
    vars:=FUNTest2;
    --或
    select FUNTest2 into vars from dual;
    end;
    如果带有出参的话,还要在函数后面加括号放参数。