oracle当然也可以实现
可以创建对象表类型,建议楼主先查查这方面的资料

解决方案 »

  1.   

    select * from test where test_date between bd and ed;
    错了
    应该这样
    select * from test where test_date <= bd
    minus
    select * from test where test_date <= ed;
      

  2.   

    另外,可以使用ORACLE REF CURSOR这个类型,但8i都需要先在包里声明,楼主要是9i的话可以像其它类型一样直接使用了,请参考文章:
    http://blog.chinaitlab.com/user1/329685/archives/2006/65735.html
      

  3.   

    CREATE or replace FUNCTION append_str(p_id varchar2)
    RETURN varchar2
    is
    v_c varchar2;
    BEGIN
        v_c :='adsf';
        RETURN substr(p_id,2,length(p_id));
    END;有什么问题?为什么无效
      

  4.   

    SQL> CREATE or replace FUNCTION append_str(p_id varchar2)
      2  RETURN varchar2
      3  is
      4  v_c varchar2;
      5  BEGIN
      6      v_c :='adsf';
      7      RETURN substr(p_id,2,length(p_id));
      8  END;
      9  /Warning: Function created with compilation errors.SQL> show error
    Errors for FUNCTION APPEND_STR:LINE/COL ERROR
    -------- -----------------------------------------------------------------
    4/5      PLS-00215: String length constraints must be in range (1 ..
             32767)4/5      PL/SQL: Item ignored
    6/5      PLS-00320: the declaration of the type of this expression is
             incomplete or malformed6/5      PL/SQL: Statement ignored
    SQL> CREATE or replace FUNCTION append_str(p_id varchar2)
      2  RETURN varchar2
      3  is
      4  v_c varchar2(4000);
      5  BEGIN
      6      v_c :='adsf';
      7      RETURN substr(p_id,2,length(p_id));
      8  END;
      9  /Function created.SQL>
      

  5.   

    定义varchar2变量要加上长度:v_c varchar2(4000);
      

  6.   

    ORACLE的功能更强大,创建一个包,在包中定义存储过程,为了返回结果集,一定要定义为游标类型.
    并在包正文中实现该存储过程.
      

  7.   

    PROCEDURE ListAllA_CHUANRBGAs (cur_A_CHUANRBGA OUT T_CURSOR)
    IS
    BEGIN
        OPEN cur_A_CHUANRBGA FOR
        SELECT * FROM A_CHUANRBGA ;
    END ListAllA_CHUANRBGAs;