现把SQLSERVER2005数据移植到oracle10g,SQLSERVER中的表值函数,而oracle10g 函数怎么样返回一个表呀,请各位大侠帮帮小妹!

解决方案 »

  1.   


    --可以使用存贮过程实现,给个例子:sql>select select * from test;       A        B
    ---------- ----------
           1        1
           2        2
           3        3
           3       10sql>create or replace procedure p_test(in_var number,out_var out sys_refcursor)
      2  as
      3  begin
      4  open out_var for select * from test where aaa=in_var;
      5  end;
      6  /Procedure created.sql>var abc refcursor
    sql>exec p_test(3,:var_test)PL/SQL procedure successfully completed.sql>print :var_test       A        B
    ---------- ----------
           3        3
           3       10
      

  2.   

    http://www.itpub.net/584802.html
      

  3.   

    CREATE OR REPLACE PACKAGE pkg_test 
    AS 
        TYPE myrctype IS REF CURSOR; 
      
        PROCEDURE get (p_id NUMBER, p_rc OUT myrctype); 
    END pkg_test; 
    / CREATE OR REPLACE PACKAGE BODY pkg_test 
    AS 
        PROCEDURE get (p_id NUMBER, p_rc OUT myrctype) 
        IS 
           sqlstr VARCHAR2 (500); 
        BEGIN 
           sqlstr := 'select * from emp';
              OPEN p_rc FOR sqlstr USING p_id; 
        END get; 
    END pkg_test; 

      

  4.   

    但是,要在函数中使用insert,delete语句怎么办?