解决方案 »

  1.   

    SQL语句里面不能调用局部方法将function f(o_obj in tp) 定义为oracle的全部方法应该就可以了
      

  2.   

    不应该啊,函数f是package里的函数,但是它能调用dbms_output包里的函数,
    为什么package包里的procedure不能调用自身包里的其他函数呢
      

  3.   

    select f(o_obj) into o_tmp from dual;
    改成
    o_tmp:=f(o_obj);
      

  4.   

    改成这样是可以了,可是为什么不能通过select调用呢
      

  5.   

    和是不是全局无关
    这里的函数中用到了tp类型,而record类型只能用在pl/sql中,因此写成select .. from 的方式会报错,可以改写成o_tmp:=f();
    如果要用select into的方式,则要使用object类型。这个类型不能定义在package里