Объект server-side | |
Реализовано в | Netscape Server 3.0 |
Создание
Методом resultSet
объекта Stproc
. Объект Resultset
не имеет конструктора.
Описание
Для Sybase, Oracle, ODBC и DB2 сохраненной процедуры, объект сохраненной процедуры имеет один объект набора результатов для каждого выражения SELECT
, выполненного сохраненной процедурой. Для Informix сохраненной процедуры, объект сохраненной процедуры всегда имеет один объект набора результатов.
database.beginTransaction();
spobj = database.storedProc("getcusts");
resobj = spobj.resultSet();
database.commitTransaction();
/* Запрещено! Набор результатов больше недоступен! */
col1 = resobj[0];
returnValue
или outParameters
объекта сохраненной процедуры. Как только Вы вызываете любой из этих методов, Вы больше не можете получить данные из набора результатов, и Вы не можете получить любые дополнительные наборы результатов.
spobj = database.storedProc("getcusts");
resobj = spobj.resultSet();
retval = spobj.returnValue();
/* Запрещено! Набор результатов больше недоступен! */
col1 = resobj[0];
cursor
или SQLTable
объекта Connection
. Например, следующий код запрещен:
spobj = database.storedProc("getcusts");
cursobj = database.cursor("SELECT * FROM ORDERS;");
/* Запрещено! Набор результатов больше недоступен! */
resobj = spobj.resultSet();
col1 = resobj[0];
Resultset
закончена, используйте метод close
, чтобы закрыть его и освободить память, которую он использует. Если Вы выпускаете подключение, которое имеет открытый набор результатов, двигатель времени выполнения ждет, пока набор результатов не будет закрыт перед фактическим освобождением подключения.
|
Позволяет добавление свойств к объекту Resultset .
|
Примеры
Допустим, что Вы имеете следующую Oracle сохраненную процедуру:
create or replace package timpack
as type timcurtype is ref cursor return customer%rowtype;
type timrentype is ref cursor return rentals%rowtype;
end timpack; create or replace procedure timset4(timrows1 in out timpack.timcurtype, timrows in out timpack.timrentype)
Выполнение этой сохраненной процедуры создает два набора результатов, к которым Вы можете обращаться. В следующем фрагменте кода набор результатов
as begin
open timrows for select * from rentals;
open timrows1 for select * from customer;
end timset4; resobj1
имеет строки, возвращенные ссылкой на курсор timrows
, и набор результатов resobj2
имеет строки, возвращенные ссылкой на курсор timrows1
.
spobj = database.storedProc("timset4");
resobj1 = spobj.resultSet();
resobj2 = spobj.resultSet();Свойства
prototype
Представляет прототип для этого класса. Вы можете использовать прототип, чтобы добавлять свойства или методы ко всем образцам класса. Для информации о прототипах, смотрите Function.prototype
.
Свойство объекта |
Resultset
|
Реализовано в | LiveWire 1.0 |
Методы
close
Закрывает набор результатов и освобождает распределенную память.
Метод объекта |
Resultset
|
Реализовано в | Netscape Server 3.0 |
Синтаксис
close()
Параметры
Нет.
Возвращает
0, если запрос был успешен; иначе, ненулевой код состояния, основанный на любом сообщении об ошибках, переданном базой данных. Если метод возвращает ненулевой код состояния, используйте связанные методы majorErrorCode
и majorErrorMessage
, чтобы интерпретировать причину ошибки.
Описание
Метод close
закрывает курсор или набор результатов и освобождает используемую память. Если Вы явно не закрываете курсор или набор результатов методом close
, двигатель времени выполнения JavaScript на сервере автоматически закрывает все открытые курсоры и наборы результатов, когда соответствующий объект client
выходит из области видимости.
Примеры
Следующий пример создает курсор rentalSet
, выполняет некоторые операции с ним, и затем закрывает его методом close
.
// Создаем объект Cursor
rentalSet = database.cursor("SELECT * FROM rentals")// Выполняем операции с курсором
cursorOperations()// Закрываем курсор
err = rentalSet.close()Смотрите также
Cursor
columnName
Возвращает имя столбца в наборе результатов, соответствующего определенному номеру.
Метод объекта |
Resultset
|
Реализовано в | Netscape Server 3.0 |
Синтаксис
columnName (n)
Параметры
n | Нуль-основанное целое число, соответствующее столбцу в запросе. Первый столбец в наборе результатов - 0, второй - 1, и так далее. |
Возвращает
Имя столбца. Для Informix сохраненной процедуры, этот метод для объекта Resultset
всегда возвращает строку "Expression".
resSet = stObj.resultSet("select * from customer");
Если таблица customer имеет 3 столбца, ID, NAME, и CITY, Вы не можете сообщить раньше срока, который из этих столбцов соответствует resSet.columnName(0)
. (Конечно, Вам гарантируют, что последовательные вызовы columnName
имеют тот же самый результат.) Если порядок имеет значение, Вы можете взамен жестко задавать имена столбцов в выражении SELECT
, как в следующем выражении:
resSet = stObj.resultSet("select ID, NAME, CITY from customer");
С этим выражением, resSet.columnName(0)
равно ID, resSet.columnName(1)
равно NAME, и resSet.columnName(2)
равно CITY.
Примеры
Следующий пример присваивает имя первого столбца курсора customerSet
переменной header
:
customerSet=database.cursor(SELECT * FROM customer ORDER BY name)
header = customerSet.columnName(0)columns
Возвращает число столбцов в наборе результатов.
Метод объекта |
Resultset
|
Реализовано в | Netscape Server 3.0 |
Синтаксис
columns()
Параметры
Нет.
Возвращает
Число именованных и неименованных столбцов.
Примеры
Смотрите Пример 2 объекта Cursor
для примера использования метода columns
с массивом cursorColumn
.
Следующий пример возвращает число столбцов в курсоре custs
:
custs.columns()
next
Перемещает текущую строку к следующей строке в наборе результатов.
Метод объекта |
Resultset
|
Реализовано в | Netscape Server 3.0 |
Синтаксис
next()
Параметры
Нет.
Возвращает
False, если текущая строка последняя; иначе, true.
Описание
Первоначально, указатель (или текущая строка) для курсора или набора результатов установлен перед первой возвращенной строкой. Используйте метод next
, чтобы перемещать указатель по записям в курсоре или наборе результатов. Этот метод перемещает указатель на следующую строку и возвращает true пока имеется другая доступная строка. Когда курсор или набор результатов достигает последней строки, метод возвращает false. Обратите внимение, что если курсор пуст, этот метод всегда возвращает false.
Примеры
Пример 1. Этот пример использует метод next
, чтобы переместиться к последней строке в курсоре. Переменная x
инициализирована в true. Когда указатель находится в последней строке курсора, метод next
возвращает false и завершает цикл while
.
customerSet = database.cursor("select * from customer", true)
x = true
Пример 2. В следующем примере, курсор
while (x) {
x = customerSet.next() }rentalSet
содержит столбцы с именами videoId
, rentalDate
и dueDate
. Метод next
вызывается в цикле while
, который выполняет итерации над каждой строкой в курсоре. Когда указатель находится на последней строке в курсоре, метод next
возвращает false и завершает цикл while
.
Этот пример показывает три столбца курсора в таблице HTML:
<SERVER>
// Создаем объект Cursor
rentalSet = database.cursor("SELECT videoId, rentalDate, returnDate
FROM rentals")
</SERVER>// Создаем таблицу HTML
<TABLE BORDER>
<TR>
<TH>Идентификатор Видео</TH>
<TD>Дата Ренты</TD>
<TD>Due Date</TD>
</TR><SERVER>
// Выполняем итерации над каждой строкой в курсоре
while (rentalSet.next()) {
</SERVER>// Отображаем значения курсора в таблице HTML
<TR>
<TH><SERVER>write(rentalSet.videoId)</SERVER></TH>
<TD><SERVER>write(rentalSet.rentalDate)</SERVER></TD>
<TD><SERVER>write(rentalSet.returnDate)</SERVER></TD>
</TR>// Завершаем цикл while
<SERVER>
}
</SERVER>// Конец таблицы
</TABLE>
Последняя Модификация: 10/31/97 16:36:13
Все мессаги сюда:yanich@inbox.ru |