Серверный JavaScript 1.4. Руководство по использованию



Изменение Информации Базы Данных - часть 2


if ( emps && (connobj.majorErrorCode() == 0) ) {

// Производится итерация по рядам курсора с обновлением информации на базе // return-значения функции metQuota.


   while ( emps.next() ) {

      if (metQuota (request.quota, emps.sold)) {

         emps.bonus = computeBonus (emps.sold);

      }
      else emps.bonus = 0;

      emps.updateRow ("employees");
   }

   // После выполнения - закрывается курсор и подтверждается транзакция.

   emps.close();
   connobj.commitTransaction();
}
else {

   // Если курсор для работы отсутствовал, транзакция откатывается.

   connobj.rollbackTransaction();
}

Этот пример создаёт обновляемый курсор для всех employees/служащих департамента Sales. Производится итерация по рядам курсора через использование определяемой пользователем функции JavaScript metQuota, для того чтобы определить, выполнил ли служащий норму. Эта функция использует значение свойства quota объекта request (возможно, установленное в форме на клиентской странице) и столбец sold курсора для выполнения этого определения. Код затем устанавливает соответствующую премию и вызывает updateRow

для модифицирования таблицы employees. Когда пройдены все ряды курсора, подтверждается транзакция. Если вызов метода cursor не вернул никакого курсора, транзакция откатывается.

Помимо метода updateRow, Вы можете использовать методы insertRow и deleteRow для вставки нового ряда или удаления текущего. При использовании deleteRow не нужно присваивать никакого значения, поскольку этот метод просто удаляет весь ряд.

Если Вы используете insertRow, значения, присваиваемые столбцам, используются для нового ряда. Если перед этим Вы вызвали метод next курсора, то текущие значения в ряду используются для столбцов без присвоенных значений; иначе столбцы будут иметь значения null. Также, если некоторые столбцы таблицы не вошли в курсор, insertRow вставляет null в эти столбцы. Место расположения вставляемого ряда зависит от библиотеки производителя БД. Если Вам нужен доступ к ряду после вызова метода insertRow, Вы обязаны сначала закрыть имеющийся курсор, а затем открыть новый.

ПРИМЕЧАНИЕ:

В DB2 имеется тип данных Time. JavaScript не имеет соответствующего типа данных. Поэтому Вы не можете обновлять ряды значениями, использующими тип данных DB2 Time.




Содержание  Назад  Вперед