Ю тся следую щие вопросы : ■ Структура блоков я зы к а o racle p L /s q L


Download 0.9 Mb.
Pdf ko'rish
bet9/14
Sana07.03.2023
Hajmi0.9 Mb.
#1246661
1   ...   6   7   8   9   10   11   12   13   14
Bog'liq
Майкл Мак-Локлин - Oracle DB 11g. Программирование на языке PL-SQL - 2014 better 51-73

41
П ростые циклы
П р о сты е ц иклы являю тся яв н о задан н ы м и структурами. О н и требуют
что бы вы уп равляли как счетч и ком цикла, так и к р и тер и я м и выхода. 
О б ы чн о п р о сты е ц иклы использую тся в вм есте с локальн о о п ред ел ен н ы ­
ми курсорам и и курсорны м и п ер ем ен н ы м и
(REF CURSOR).
O racle п р ед оставляет вам ш есть атрибутов курсора, к о то р ы е помогут 
уп равлять л о ги к о й цикла. Ч е т ы р е атри бута курсора следующие: 
%F0UND, 
%N0TF0UND, %IS0PEN, 
и
%R0WC0UNT. 
Д ва других поддерж иваю т массовы е о п е­
рац и и. Все о н и рассм атр и ваю тся в Главе 4.
П р о сты е ц иклы им ею т р азн о о б р азн о е п р и м ен ен и е. Следующ ий п р и ­
м ер д ем он стри рует п р о то ти п п р о сто го цикла, использую щ его явн о за­
дан ны й курсор 
(CURSOR):
□ OPEN имя_курсора [(параметр"!, параметр(п+1))];
LOOP
FETCH имя_курсора
INTO переменная_структуры_строки|переменная_столбца1[,переменная 
столбца(п+1)];
EXIT WHEN имя_кypcopa%NOTFOUND; 
оператор;
END LOOP;
CLOSE имя_курсора;
П р о то ти п показы вает, ч то нужно откр ы ть 
(OPEN) 
курсор 
(CURSOR) 
до 
начала п р о сто го цикла, а затем нужно вы б рать 
(FETCH) 
строку. П о м ере 
того, как вам возвращ аю тся строк и , м ож но их обрабаты вать, но если 
о п ер ац и я вы б орки
(FETCH) 
не удается, вы вы ходи те и з цикла. Вы долж ны
пом ести ть п ред лож ен и е 
EXIT WHEN 
п оследним в ц икле, если вы х о ти те п о ­
лучить ц и к ли ч еск и й ал гори тм «п овтор ять пока» (rep eat u n til). О б ы чн о 
циклы ти п а «п овторять пока» (rep ea t un til) п р о х о д ят как минимум одну 
итерац и ю , н езави си м о о т того, вернул л и курсор 
(CURSOR) 
х о тя бы одну 
строку.
Следующ ий п р и м ер п оказы вает и сп ол ьзован и е курсорного ц икла 
FOR 
с таб л и ц ей
ITEM:
□ DECLARE
title item.item_title%TYPE;
CURSOR с IS SELECT item_title FROMitem;
BEGIN 
OPEN c;
LOOP
FETCH с INTO title;
EXIT WHEN c%N0TF0UND;
dbms_output.putlineC The title is [‘ ||title| Г ]’);
END LOOP;
CLOSE c;
END;
/



Download 0.9 Mb.

Do'stlaringiz bilan baham:
1   ...   6   7   8   9   10   11   12   13   14




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling