Этот этап применяется ко всем хранимым процедурам.
Как указано в разделе , разные БД возвращают результирующие наборы разными способами. Например, у Вас имеется таблица CUSTINFO со столбцами id, city и name. В Sybase Вы можете использовать такую процедуру для получения первых 200 рядов таблицы:
create proc getcusts as
begin
select id, name, city from custinfo where custno < 200
end
Если CUSTINFO является таблицей Informix, эквивалентная процедура в Informix может быть:
create procedure getcusts returning int, char(15), char(15);
define rcity, rname char (15);
define i int;foreach
select id, name, city into i, rname, rcity
from custinfo
where id < 200;
return i, rname, rcity with resume;
end foreach;
end procedure;
Если CUSTINFO - таблица Oracle, эквивалентная процедура Oracle может быть:
create or replace package orapack as
type custcurtype is ref cursor return custinfo%rowtype
end orapack;create or replace custresultset (custcursor inout orapack.custcurtype)
as begin
open custcursor for select id, name, city from custinfo
where id < 200
end custresultset;
Во всех случаях Вы создаёте resultSet -объект для получения информации из хранимой процедуры. Вы делаете это через использование метода resultSet объекта хранимой процедуры так:
resObj = spObj.resultSet();
Как и для Cursor -объектов, resultSet -объекты содержат текущий ряд, то есть ряд, на котором стоит указатель в результирующем наборе. Вначале указатель позиционирован перед первым рядом результирующего набора. Чтобы увидеть значения рядов результирующего набора, Вы используете метод next для перемещения указателя по рядам результирующего набора, как показано в следующем примере:
spobj = connobj.storedProc("getcusts");
if ( spobj && (connobj.majorErrorCode() == 0) ) {
// Создаётся новый resultSet-объект.
resobj = spobj.resultSet(); // Перед тем как продолжить, убедитесь, что Вы получили результирующий набор.