Ю тся следую щие вопросы : ■ Структура блоков я зы к а o racle p L /s q L
Download 0.9 Mb. Pdf ko'rish
|
Майкл Мак-Локлин - 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; / |
Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling
ma'muriyatiga murojaat qiling