Особенности сооружения опор в сложных условиях: Сооружение ВЛ в районах с суровыми климатическими и тяжелыми геологическими условиями...
Археология об основании Рима: Новые раскопки проясняют и такой острый дискуссионный вопрос, как дата самого возникновения Рима...
Топ:
Когда производится ограждение поезда, остановившегося на перегоне: Во всех случаях немедленно должно быть ограждено место препятствия для движения поездов на смежном пути двухпутного...
Характеристика АТП и сварочно-жестяницкого участка: Транспорт в настоящее время является одной из важнейших отраслей народного хозяйства...
Интересное:
Что нужно делать при лейкемии: Прежде всего, необходимо выяснить, не страдаете ли вы каким-либо душевным недугом...
Лечение прогрессирующих форм рака: Одним из наиболее важных достижений экспериментальной химиотерапии опухолей, начатой в 60-х и реализованной в 70-х годах, является...
Инженерная защита территорий, зданий и сооружений от опасных геологических процессов: Изучение оползневых явлений, оценка устойчивости склонов и проектирование противооползневых сооружений — актуальнейшие задачи, стоящие перед отечественными...
Дисциплины:
|
из
5.00
|
Заказать работу |
Содержание книги
Поиск на нашем сайте
|
|
|
|
Открытый курсор не запрещает изменять данные таблиц, выбираемых курсором, и даже удалять их строки, так как на курсор распространяется правило целостности операции SQL:
DECLARE
CURSOR curs_ a IS SELECT deptno FROM dept ORDER BY deptno DESC;
CURSOR curs_ b IS SELECT deptno FROM dept ORDER BY deptno DESC;
dno dept.deptno%TYPE;
BEGIN
OPEN curs_a;
FETCH curs_a INTO dno; DBMS_OUTPUT.PUT_LINE('cursor A:' || dno);
DELETE FROM dept WHERE deptno = 40;
OPEN curs_b;
FETCH curs _a INTO dno; DBMS_OUTPUT.PUT_LINE('cursor A:' || dno);
FETCH curs_b INTO dno; DBMS_OUTPUT.PUT_LINE('cursor B: ' || dno);
FETCH curs_a INTO dno; DBMS_OUTPUT.PUT_LINE('cursor A:' || dno);
FETCH curs_b INTO dno; DBMS_OUTPUT.PUT_LINE('cursor B: ' || dno);
FETCH curs_a INTO dno; DBMS_OUTPUT.PUT_LINE('cursor A:' || dno);
FETCH curs_b INTO dno; DBMS_OUTPUT.PUT_LINE('cursor B: ' || dno);
CLOSE curs_a;
CLOSE curs_b;
END;
/
SELECT * FROM dept;
ROLLBACK;
(Обратите внимание, что целостность данных, выдаваемых курсором, не пострадала).
Однако для изменения текущей строки, выбираемой с помощью курсора, есть более эффективное средство (см. фразу WHERE CURRENT OF в блокирующем курсоре ниже).
Атрибуты для явных курсоров
У каждого явно открываемого курсора имеются для использования в программе четыре атрибута:
| Атрибут | Значение |
| %ISOPEN | Имеет значение TRUE, если курсор открыт и FALSE, если нет |
| %FOUND | Исключительное состояние INVALID_CURSOR, если курсор не открыт с помощью OPEN или закрыт с помощью CLOSE NULL – перед первым выполнением FETCH TRUE – после успешного выполнения FETCH FALSE – если FETCH не сумел выдать строку |
| %NOTFOUND | Исключительное состояние INVALID_CURSOR, если курсор не открыт с помощью OPEN или закрыт с помощью CLOSE NULL – перед первым выполнением FETCH FALSE – после успешного выполнения FETCH TRUE – если FETCH не сумел выдать строку |
| %ROWCOUNT | Исключительное состояние INVALID_CURSOR, если курсор не открыт с помощью OPEN или закрыт с помощью CLOSE Число – общее число строк, извлеченных после последней операции FETCH для курсора |
Синтаксис использования атрибута: имя_курсора % атрибут.
Пример использования в программе:
DECLARE
caller_rec caller_package.caller_cursor%ROWTYPE;
BEGIN
OPEN caller_package.caller_cursor
LOOP
FETCH caller_package.caller_cursor INTO caller_rec;
EXIT WHEN caller_package.caller_cursor%NOTFOUND
OR
caller_package.caller_cursor%ROWCOUNT > 10;
UPDATE call
SET caller_id = caller_rec.caller_id
WHERE call_timestamp < SYSDATE;
END LOOP;
CLOSE caller_package.caller_cursor;
END;
(Здесь предполагается, что имеется таблица с именем CALL с информацией о телефонных звонках и что есть пакет CALLER_PACKAGE для работы с этой информацией).
Неявные курсоры
Открываются при непосредственном указании в тексте операторов INSERT, UPDATE, DELETE и SELECT INTO. Явных операций открытия, OPEN, FETCH и CLOSE они не требуют.
В случае SELECT INTO возможны исключительные ситуации, при возникновении которых управление передается в раздел обработки исключительных ситуаций:
NO_DATA_FOUND – если не извлечено ни единой строки
TOO_MANY_ROWS – если извлечено более одной строки
С неявными курсорами связаны следующие атрибуты:
| Атрибут | Значение |
| %ISOPEN | Всегда FALSE, так как атрибут открывается неявно и закрывается сразу после отработки SQL-предложения |
| %FOUND | NULL – перед выполнением SQL-оператора TRUE – если оператор обработал несколько строк (выдал – только одну) FALSE – если оператор не обработал ни одной строки |
| %NOTFOUND | NULL – перед выполнением SQL-оператора FALSE – если оператор обработал несколько строк (выдал – только одну) TRUE – если оператор не обработал ни одной строки |
| %ROWCOUNT | Число – количество обработанных строк |
| %BULK_ROWCOUNT | Псевдо-индексная таблица с числом обработанных строк при использовании привязки массивом (только начиная с версии 8.1) |
Синтаксис использования атрибута: SQL% атрибут.
Пример использования в программе (в SQL*Plus):
BEGIN
UPDATE emp SET sal = sal WHERE deptno = &department_no;
IF SQL%NOTFOUND THEN
DBMS_OUTPUT.PUT_LINE('No employees in this department');
ELSE
DBMS_OUTPUT.PUT_LINE('Perfectly done for '|| SQL%ROWCOUNT ||’ employees’);
END IF;
END;
/
Неявный курсор для множественного отбора в цикле (FOR rec IN (SELECT … FROM …) LOOP … END LOOP;) атрибутов не имеет.
|
|
|
Состав сооружений: решетки и песколовки: Решетки – это первое устройство в схеме очистных сооружений. Они представляют...
Опора деревянной одностоечной и способы укрепление угловых опор: Опоры ВЛ - конструкции, предназначенные для поддерживания проводов на необходимой высоте над землей, водой...
Архитектура электронного правительства: Единая архитектура – это методологический подход при создании системы управления государства, который строится...
Организация стока поверхностных вод: Наибольшее количество влаги на земном шаре испаряется с поверхности морей и океанов (88‰)...
© cyberpediasu.com 2017-2026 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!