小弟刚接触oracle,请大家指点一下我在oracle写的Functioncreate or replace function F_FUNCTION2(usercode varchar2(20))
return sys_refcursor as 
v_all sys_refcursor;
begin
  open v_all for
  select * from userinfo t where t.usercode=usercode
  end;
  
----主要是带一个参数的在C#中调用,此函数 OracleCommand cmd = new OracleCommand("F_FUNCTION2", conn);
                cmd.CommandType = CommandType.StoredProcedure;
                OracleParameter p1 = new OracleParameter("usercode", OracleType.VarChar, 20);
                p1.Direction = System.Data.ParameterDirection.Input;
                p1.Value = uscode;
                cmd.Parameters.Add(p1);
                OracleDataAdapter oda = new OracleDataAdapter();
                oda.SelectCommand = cmd;                DataTable dt = new DataTable();
                oda.Fill(dt);
                return dt;当编译运行时,报错:    ORA-06550: 第 1 行, 第 7 列: 
                        PLS-00201: 必须声明标识符 'F_FUNCTION2'
                        ORA-06550: 第 1 行, 第 7 列: 
                        PL/SQL: Statement ignored我在网上也找了些,但都没解决掉,请高手指点

解决方案 »

  1.   

    这,函数是怎么调用的?你这是执行存储过程。
    SELECT F_FUNCTION2(usercode) FROM DUAL; 然后就和执行查询语句一样处理就可以了。不用像执行存储过程那样。
      

  2.   


    你好,我的oracle中的函数,上面有红色的叉叉,我按照你的方法有点进步了,但还是不能正常跑起来,是不是因为那红色的叉叉?错误:标识符无效
      

  3.   

    貌似你这个函数没有创建成功
    create or replace function F_FUNCTION2(usercode varchar2(20))
    return sys_refcursor as  
    v_all sys_refcursor;
    begin
      open v_all for
      select * from userinfo t where t.usercode=usercode;/*这加个分号试试*/
      return v_all ;/*这加一句*/
      end;
      

  4.   

    在创建的时候,函数的参数不应该有具体的数据类型,比如不能有varchar2(20) ,只能是varchar2