Бърз в Oracle

Курсора - указател към запазени част на памет в SGA, която се обработва от SQL (SELECT) или ГСД (UPDATE / INSERT / DELETE) оферта.

SGA (Глобална система за пространство), голяма част от паметта, запазено от операционната система, която използва Oracle да работят. РОА (наред с други неща) са общ басейн (споделена памет басейн) и частен басейн на паметта (частен басейн с памет), които се изпълняват PL / SQL-програма. Когато вашият код се компилира и заредени в паметта за изпълнение, определянето на курсора се зарежда в общ басейн: Курсор текст и разбор код. Под термина "споделено" означава, че съществува само едно копие в паметта, и означава, че ако и двамата сме се прилага една и съща идентично искане (по същия символиката), ние използваме избухна отново. Oracle знае, че курсора на мишката и ми - идентичен при сравняването версия на текста на курсора. И в този случай, Oracle да използвате курсора, която вече е в паметта.

Когато правя моята мишка, необходима за обработка на информация се съхранява в частен басейн памет. В този случай, Oracle ви позволява да използва един и същи курсора.

Има три основни типа курсори:
  • неявна
  • ясен и
  • Курсорът цикли ЗА.

Скритият курсора се контролира автоматично, прозрачен за вас. По време на изпълнение, курсорът се отваря, а избран от данните и се затваря, всички в един shag.Neyavnye курсори се използват само в случай, че е необходимо да се върне един ред от таблицата. Когато имплицитно курсора трябва да се върне повече от един ред, по изключение (TOO_MANY_ROWS) се задейства. Факт е, че можете да изберете (SELECT INTO) само скаларни променливи (които имат само една стойност).

Когато имплицитно курсора не се връща от всички редове, по изключение (NO_DATA_FOUND) се задейства.

Винаги използвайте неявна курсора заедно със своя собствена изключение манипулатор.

Типични изключения, които могат да възникнат при работа с курсора: Когато декларираната променлива тип запис, който полето е точно същото с исканите в SELECT изявление данни, то е възможно да се използват за строителство SELECT INTO. Косвените курсори са оптимизирани, за да изберете един ред, и следователно, те работят по-бързо от ясно дефинирана: откриването, пробата и затваряне на курсора.

За препратки към полето за запис, използвани термини. Примери: Можете също да укажете Тип на записите и да направи курсора, за да го върне. Както можете да видите, като първата се използва за пакетирани курсор, който искате да споделите. спецификация Партида съдържа само описание на курсора (име и вид връщане), а (скрита) курсора организма се съдържа в SELECT изявлението. И двата курсора компоненти трябва да бъдат съчетани (мач). запис тип се използва за осигуряване на удобно тип данни за курсора. тип запис и Курсор израза SELECT сравними.

Чрез определянето на курсора в тялото на тялото пакет, можете да запазите изявлението на курсора по-лесно без да е необходимо да компилирате заглавната пакети, които могат да повлияят на зависимо софтуер единица.

Бърз са (4) атрибути:
  • НАМЕРЕНИ линия е премахнат успешно? (Вярно / невярно)
  • NOTFOUND Низът не е отстранена? (Вярно / невярно)
  • ISOPEN курсора отворен? (Вярно / невярно)
  • Броят на редовете, извлечена ROWCOUNT

Първите три стойности на Булева (Булев) и четвъртата - броя. Намерено NOTFOUND и ROWCOUNT - се използва за отваряне курсори. ISOPEN може да се използва за тестване, които са отворени курсори и които са затворени. Можете да ги използвате с нотация на атрибута; например: Параметризираните курсори

Изрично курсори да използвате: Добра практика е да се използва винаги параметри на база видове трапезни данни, с които е трябвало да ги използвате.

Име на параметър трябва да бъде различен от името на колоната в местната курсора; В противен случай, всеки ред ще бъдат върнати! (X = х е винаги е вярно). Бъдете последователни в имената на параметри за избор; например, "винаги използвайте символ Оттогава името на графата" това правило може да се използва като стандарт, когато се занимават с изрични курсори.

Името на параметъра е само "пълнеж" за променливата, която ви предоставят. Площ - строго местен курсора в организма. Защото курсори са обекти за само за четене, не е нужно да се определят параметрите на потока. Flow - винаги в (IN).

Курсор контури

Бегъл цикъл ЗА - повтарящ се дизайн, който позволява да използвате OPEN, донесе, CLOSE курсора в рамките на цикъла. Тя ви позволява да извършвате операции на всеки ред, избран в цикъла. Той обикновено се използва, когато ви предстои да обработва всеки низ, който го връща. Ако е необходимо да се прекъсне цикъла преждевременно, използвайте изрични курсори (с техния по-голям контрол). Изходът на курсора (виж по-горе :. Rec) може да се използва само в един цикъл. Не можете да използвате запис (запис) извън линия, защото тя не съществува извън сферата на цикъла. Ако имате нужда, за да видите стойността на типа на запис извън линия, присвояване на променлива дефинира извън контура. Запис променлива се негласно обявен с едни и същи видове области като курсор линия и може да бъде призован като нищо.

Никой от курсора атрибути освен isOpen, не е на разположение извън линия, защото курсора не е отворен. Ако се опитате да извикате намерени, NOTFOUND и ROWCOUNT извън курсора цикли (ЗА), вие ще получавате съобщение за грешка: ORA-01001: невалиден курсора.

Подобно на ясни курсори, курсора на курсора използва за (ЗА) цикли могат да използват и опции.

Най-простата форма на курсора (ЗА) цикъл е заявка, която е поставена в описанието на цикъла: