Студопедия

Главная страница Случайная страница

Разделы сайта

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






Список атрибутов, используемых совместно с курсором






Имя атрибута Назначение Образец фрагмента программы
%FOUND После открытия курсора, но до первого использования оператора FETCH этот атрибут содержит NULL. После любого перемещения по курсору будет TRUE, если последний FETCH вернул запись, FALSE - последний FETCH не нашел запись в курсоре. … OPEN имя_курсора; FETCH имя_курсора INTO имя_записи; IF имя_курсора%FOUND THEN … ELSE …  
%ISOPEN Атрибут возвращает TRUE, если курсор открыт с помощью оператора OPEN, иначе FALSE. … IF имя_курсора%ISOPEN =FALSE THEN OPEN c1; END IF; FETCH имя_курсора INTO имя_записи; … CLOSE имя_курсора;
%NOTFOUND Атрибут, логически противоположный %FOUND.  
%ROWCOUNT После открытия курсора, но до первого использования оператора FETCH этот атрибут содержит 0. По мере перемещения по курсору на запись значение атрибута увеличивается на 1.  

 

Пример объявления курсора по таблице Авторы:

DECLARE

my_id_author NUMBER(3); -- переменная для значения Code_author

my_Name_author CHAR(30); -- переменная для значения Name_author

my_Birthday DATE; -- переменная для значения Birthday

CURSOR c1 IS SELECT * FROM ADMIN_BOOKS.Authors

WHERE Code_author > 20;

 

Пример объявления курсора с выбором автора и одновременным помещением результата в переменную:

DECLARE

my_authors ADMIN_BOOKS.Authors%ROWTYPE;

CURSOR c2 RETURN ADMIN_BOOKS.Authors%ROWTYPE IS

SELECT * FROM ADMIN_BOOKS.Authors WHERE Code_author = 20;

Пример объявления курсора с использованием полей со значениями по умолчанию:

DECLARE

CURSOR c3 (low NUMBER(3) DEFAULT 0, high NUMBER(3) DEFAULT 105) IS SELECT * FROM ADMIN_BOOKS.Authors WHERE Code_author> low AND Code_author< high;

Пример работы с курсором с циклом LOOP:

SET SERVEROUTPUT ON

DECLARE

CURSOR c1 IS SELECT Publish, Code_publish FROM ADMIN_BOOKS.Publishing_house WHERE Code_publish< 11;

name1 ADMIN_BOOKS.Publishing_house.Publish %TYPE;

code1 ADMIN_BOOKS.Publishing_house.Code_publish%TYPE;

BEGIN

OPEN c1;

LOOP

FETCH c1 INTO name1, code1;

EXIT WHEN c1%NOTFOUND OR c1%NOTFOUND IS NULL;

DBMS_OUTPUT.PUT_LINE(c1%ROWCOUNT || '. ' || name1);

IF c1%ROWCOUNT = 5 THEN

DBMS_OUTPUT.PUT_LINE('--- 5-я запись ---');

END IF;

END LOOP;

CLOSE c1;

END;

 

Пример работы с курсором с циклом WHILE:

SET SERVEROUTPUT ON

DECLARE

name2 ADMIN_BOOKS.Authors.Name_author %TYPE;

CURSOR authors_desc IS SELECT Name_author FROM ADMIN_BOOKS.Authors ORDER BY Name_author DESC;

BEGIN

OPEN authors_desc;

FETCH authors_desc INTO name2;

DBMS_OUTPUT.PUT_LINE(name2);

WHILE authors_desc%found LOOP

FETCH authors_desc INTO name2;

DBMS_OUTPUT.PUT_LINE(name2);

END LOOP;

CLOSE authors_desc;

END;

Пример работы с переменной типа Таблица






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.