Изменение кода JDBC с SQL Server на Oracle - PullRequest
1 голос
/ 25 мая 2010

В коде JDBC у меня есть следующее, что работает с SQL Server:

CallableStatement stmt = connection.prepareCall("{ call getName() }");

ResultSet rs = stmt.executeQuery();

if(rs != null)
{

  while(rs.next())
  {

    //do something with rs.getString("name")

  }

}

Для вышеуказанной ситуации возвращается несколько строк.

Я понимаю, что использование курсора необходимо для циклического перемещения по таблице в Oracle, но есть ли способ сохранить приведенный выше код таким же и выполнить то же самое?

Пример кода PL / SQL был бы очень признателен.

Заранее спасибо.

Ответы [ 2 ]

3 голосов
/ 25 мая 2010

Вы можете реализовать getName () как конвейерную функцию:

CREATE OR REPLACE name_record AS OBJECT ( name  VARCHAR2(100) );
/

CREATE OR REPLACE name_table AS TABLE OF name_record;
/

CREATE OR REPLACE FUNCTION getName RETURN name_table PIPELINED
AS
  n  name_record;
BEGIN
  -- I have no idea what you're doing here to generate your list of names, so
  -- I'll pretend it's a simple query
  FOR i IN (SELECT name FROM someTable) LOOP
    n := name_record( i.name );
    PIPE ROW(n);
  END LOOP;
END;
/

Вам нужно изменить фактический запрос в Java на SELECT name FROM TABLE(getName()).

2 голосов
/ 25 мая 2010

Это прямой JDBC, поэтому он будет работать с любой базой данных, имеющей действительный драйвер JDBC.

Предполагается, конечно, что сохраненный процесс существует в обоих и что вы не используете какой-либо нестандартный, проприетарный код в своем классе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...