如何从Java中获取PL / SQL过程的表?

时间:2016-05-04 12:46:08

标签: stored-procedures jdbc plsql

我有一个包含游标的包,该游标上的表类型以及返回表的函数。

create or replace package RAPI is
  cursor  coordAndImgCursor  is select latitude, longitude, picture from rapi_buildings;
  type    coordAndImgTable   is table of coordAndImgCursor%rowtype;

  function retreiveCoordsAndImgs( 
    latitude in number, 
    longitude in number, 
    area in number) 
    return coordAndImgTable;
end RAPI;
/

现在我正在尝试将此表放入Java数组中,因此我需要创建一个具有OUT参数的过程。

create or replace procedure jdbc_return(
  latitude IN number, 
  longitude IN number, 
  area IN number, 
  return_table OUT RAPI.coordAndImgTable)
as
begin 
  return_table := RAPI.retreiveCoordsAndImgs(latitude, longitude, area);
end jdbc_return;
/

代码正确且工作正常。

现在我有以下Java代码:

String jdbc_return = "BEGIN 
                        jdbc_return(47.176885, 27.576675, 0.001, ?); 
                      END;";
CallableStatement cstmt = conn.prepareCall(jdbc_return);
cstmt.registerOutParameter(1, OracleTypes.CURSOR);
cstmt.execute();

但是我收到了这个错误:

PLS-00306: wrong number or types of arguments in call to 'JDBC_RETURN'
ORA-06550: line 1, column 7:       

如何从Oracle获取该表?

0 个答案:

没有答案