create or replace function AAA99(a1 in varchar2)
  RETURN types.cursorTypes IS
  resultSet types.cursorTypes;BEGIN
 BEGIN    INSERT INTO admin_work_area  
  SELECT aa1,aa2 FROM gr where gg=a1;
 END;
  --返回结果集
  OPEN resultSet FOR
  select g1,g2 from admin_work_area;
  RETURN resultSet;
  CLOSE resultSet;
END AAA99;
-----------PL-SQL命令窗口执行--
SQL> set serverout on;
SQL> call AAA99(2009);
 
call AAA99(2009)
 
ORA-06576: 不是有效的函数或过程名
 
什么原因呢?

解决方案 »

  1.   

    1. 函数的参数是 varchar2,你用的是数值,可能会因为参数类型不匹配找不到函数
    2. 调用函数不能直接 call,因为有返回值,你没有获取,可以使用 var 定义一个变量
      

  2.   

    是不是这样:CALL AAA99("2009");
      

  3.   

    CALL AAA99("2009");也是不行的。2楼说的不明白,看来还是需要多看看书。
      

  4.   

    1、你的函数编译是否通过了。还是有错误?
    2、调用结果集
       variable v_c refcursor;  
       call AAA99('2009') into :v_c;
       print v_c
      

  5.   

    用select AAA99(2009) from dual;试一下
      

  6.   

    select AAA99(‘2009’) from dual;