procedure countries_in_same_region
(in_region_name in wf_world_regions.region_name%type,
 out_cur out traveler_assistance_package.ref_cur
 ) is 
 begin
 open out_cur for 
 Select CURRENCY_NAME, REGION_NAME,COUNTRY_NAME 
 FROM WF_COUNTRIES,WF_CURRENCIES,WF_WORLD_REGIONS
 where region_name=in_region_name and 
       WF_CURRENCIES.CURRENCY_CODE=WF_COUNTRIES.CURRENCY_CODE and
       WF_WORLD_REGIONS.REGION_ID=WF_COUNTRIES.REGION_ID;
 EXCEPTION
 WHEN NO_DATA_FOUND THEN
 DBMS_OUTPUT.PUT_LINE('NO DATA FOUND'); 
end countries_in_same_region;为何用java的CallableStatement测试该游标无法取到数据?另外,使用ref 游标可以取得多个表的数据吗,还是ref 游标只能操作一个表?

解决方案 »

  1.   

    ref cursor当然可以取多表数据,oracle没这么笨。
    确认游标select语句可以取到数据吗?
      

  2.   

    游标的select语句完全没问题,但是在java下取不到
      

  3.   


    不懂JAVA。不过你可以在PLSQL Developer或者TOAD里测试下该存储过程,看看是否能取出数据。
    如果在PLSQL Developer或者TOAD里可以取到,那就是你JAVA获取数据的问题了。
      

  4.   

    楼主把java代码贴出来给大伙瞧瞧~~
      

  5.   

    PLSQL Developer 调试下过程,看看各个参数是否都能获取到数据。
      

  6.   

    另外,使用ref 游标可以取得多个表的数据吗,还是ref 游标只能操作一个表?
    不清楚你想问什么?
    open out_cur for 
     Select CURRENCY_NAME, REGION_NAME,COUNTRY_NAME 
     FROM WF_COUNTRIES,WF_CURRENCIES,WF_WORLD_REGIONS
     where region_name=in_region_name and 
           WF_CURRENCIES.CURRENCY_CODE=WF_COUNTRIES.CURRENCY_CODE and
           WF_WORLD_REGIONS.REGION_ID=WF_COUNTRIES.REGION_ID;这个游标不是已经关联了3张表吗?已经从3张表中取得了感兴趣的字段。