你这个是sqlserver的写法,ORACLE的存储过程只有通过游标类型返回结果集
只能是这样.
CREATE OR REPLACE PACKAGE UP_002 AS
TYPE MYCURSOR IS REF CURSOR;  //游标类型
FUNCTION GETRECORD RETURN MYCURSOR;
END;CEEATE OR REPLACE PACKAGE BODY UP_002 AS
    FUNCTION GETRECORD RETURN MYCURSOR AS
      MC MYCURSOR;
    BEGIN
    OPEN MC FOR SELECT * FROM 表名 where ...;//通过游标类型返回结果集
    RETURN MC;
    END; 
END;

解决方案 »

  1.   

    这个好象不是关键,我改成下面这样,情况还是一样
    CREATE PRODUCE SELECT_XDSL_GROUP(
    STARTDATE IN DATE,
    ENDDATE IN DATE)
    AS
    BEGIN
    insert into tmp_xdsl_group
    SELECT * FROM SO_XDSL_GROUP WHERE DATE BETWEEN STARTDATE AND ENDDATE;
    END;
    关键是SO_XDSL_GROUP表不是我创建的,是DBA用户创建的,我是否没这访问这张表的权限?
      

  2.   

    CREATE PRODUCE是什么啊=>CREATE PROCEDURE
    SELECT * FROM 用户名.SO_XDSL_GROUP WHERE ...
    而且你要有权限,没权限就让别人给你啊,或者让管理员给grant select any table to you.
      

  3.   

    C#调用ORACLE存储过程返回结果集及函数
    http://jianghaifeng.bokee.com/4576057.html
      

  4.   

    grant select any table to you
    解决了
    但是再问下哈,我执行了grant select any table to you后怕被DBA发现要改回原来的权限,是不是执行revoke select any table to you就可以了?
      

  5.   

    你的权限挺大的,都能grant select any table.
      

  6.   

    哈哈,我知道DBA的账号的,但是不敢乱搞