Студопедия  
Главная страница | Контакты | Случайная страница

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Курсорные циклы FOR

Читайте также:
  1. VBA. Вложенные циклы, понятие, принципы организации.
  2. Алгоритмы на циклы с условием.
  3. Ароматические гетероциклы. Пиррол, фуран. Тиофен. Реакции электрофильного замещения
  4. Большие циклы конъюнктуры и технологические уклады
  5. ГРИБЫ: ОСОБАЯ ФОРМА ЖИЗНИ, СУМЧАТЫЕ И БАЗИДИАЛЬНЫЕ ГРИБЫ ГРИБЫ. ЦИКЛЫ РАЗВИТИЯ. ЗНАЧЕНИЕ В ЖИЗНИ ЧЕЛОВЕКА.
  6. Долгосрочные циклы экономической конъюнктуры Н.Д.Кондратьева и их влияние на динамику технологического развития.
  7. Жизненные циклы водорослей и их эволюция
  8. Жизненные циклы паразитов.
  9. Инвестициялық жобаның құрылымы : оның талдауы және өмірлік циклы
  10. Итерационные циклы.

Параметризованные курсоры

Явные курсоры могут использовать параметры:

CURSOR workload_c (Cempid employees.empid%TYPE,Cprojid projects.projid%TYPE,Cwork_date DATE) ISSELECT *FROM workloadWHEREempid = Cempid ANDprojid = Cprojid ANDwork_date = Cwork_date; Это хорошая практика всегда использовать параметры, основанные на типах данных таблицы, с которой предполагается их использовать.

Имя параметра должно отличаться от имени столбца в локальном курсоре; в противном случае, будет возвращена каждая строка! (x = x всегда TRUE). Будьте последовательны при выборе имен параметров; например, "всегда использовать символ С после имени столбца" это правило может использовать, как стандарт при работе с явными курсорами.

Имя параметра является просто “заполнителем” для переменной, которую Вы поставляете. Область - строго локальная в теле курсора.

OPEN workload_c (v_empid, v_projid, SYSDATE);

Поскольку курсоры являются объектами только для чтения, Вам не нужно определять поток для параметров. Поток - всегда в (IN).

4.Курсорные циклы. В чём их преимущество. Особенность использования переменной курсорного цикла.

Курсорные циклы FOR

Курсорный цикл FOR - итеративная конструкция, которая позволяет использовать OPEN, FETCH, CLOSE курсор в пределах цикла. Он позволяет выполнять операции над каждой строкой, выбранной в цикле. Обычно он используется, когда Вы собираетесь обрабатывать каждую строку, которую он возвращает. Если Вам нужно прервать цикл преждевременно, используйте явные курсоры (с их большим управлением).

DECLARECURSOR addresses_c ISSELECT * FROM addressesWHERE state = 'PA';BEGINFOR rec IN addresses_c LOOPDBMS_OUTPUT.put_line('ROWCOUNT=' ||TO_CHAR(addresses_c%ROWCOUNT, '000'));END LOOP;END;

Вывод из курсора rec может использоваться только в цикле. Вы не можете использовать запись (record) за пределами цикла, поскольку она не существует за пределами области цикла. Если Вам нужно видеть значение переменной типа record за пределами цикла, назначьте ему некоторую переменную, определенную за пределами цикла. Record переменная неявно объявлена с теми же типами полей, что и строки курсора, и может быть названа, как угодно.

Ни один из атрибутов курсора, кроме ISOPEN, недоступен за пределами цикла, поскольку курсор не открыт. Если Вы пытаетесь вызвать FOUND, NOTFOUND и ROWCOUNT за пределами курсора для (FOR) цикла, то получите ошибку: ORA-01001: invalid cursor.

Подобно явным курсорам, курсор, использованный на курсоре для (FOR) цикла, может также использовать параметры.

Самый простейший вид курсора для (FOR) цикла представляет собой запрос, вставленный в описание цикла:

FOR x IN (SELECT * FROM addresses) LOOPcnt:= cnt + 1; -- сделаем здесь что-нибудь полезное -- (do something useful here) END LOOP;

5.Типы данных PL/SQL: скалярные, составные, ссылочные.




Дата добавления: 2015-04-22; просмотров: 13 | Поможем написать вашу работу | Нарушение авторских прав

<== 1 ==> | 2 | 3 |


lektsii.net - Лекции.Нет - 2014-2024 год. (0.006 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав