create or replace package pkg_test 
as
type cur_test is ref cursor; -- 定義一個cursor的type
end pkg_test;
/
create or replace procedure p_test
(
v_cur out pkg_test.cur_test
)
as
v_sql varchar2(100); -- 
begin
v_sql := 'select a1,a2 from test';
OPEN v_cur FOR v_sql; --
exception
when others then 
DBMS_OUTPUT.PUT_LINE('Error .....' || sqlcode || ' : ' || sqlerrm ); 
end p_test;
/
-----------------------------------
Java程式:
……
CallableStatement call = conn.prepareCall("{ call p_test(?) }");
call.registerOutParameter(1, OracleTypes.CURSOR);// 註冊out參數的SQL數據類型
call.execute();
ResultSet rs=(ResultSet)call.getObject(1);// 取得得數据結果集合
while(rs.next())
……

解决方案 »

  1.   

    谢谢西域浪子!!java我没有用过,不知大哥是否知道用dephi怎么调用?
      

  2.   

    小弟不才:
        反正我是将结果集插入到一个临时表中,再在delphi中调用的
      

  3.   

    in delphi:
    非常简单--------------
    query.close;
    query.sql.clear;
    query.sql.add('select  * from store_procedure(参数...)');
    query.open;
    结果集就在这个query里。
      

  4.   

    西域浪子:我怎么把变量参数传到store_procedure中?谢谢!我写的对不对?query.close;
    query.sql.clear;
    query.sql.add('select  * from store_procedure(:var_a)');
    query.parambyname('var_a').asstring:=edit1.text;
    query.open;
      

  5.   

    query.sql.add('select  * from store_procedure('''+edit1.text+''')');