Какво представляват PL/SQL референтните курсори в базата данни на Oracle?
Когато става въпрос за производителност, PL/SQL Ref Cursors в Oracle винаги са се доказали, че превъзхождат статичните курсори. Поради способността на единичен ref курсор да се свързва с множество оператори SELECT в един PL/SQL блок. В допълнение, това намалява необходимостта от писане на отделни изрични курсори. Освен това, това ги прави високоефективна, гъвкава и здрава характеристика на езика PL/SQL. Така че нека разгледаме референтните курсори в PL/SQL и да научим повече за тях.
Какво представляват PL/SQL Ref Cursors в Oracle Database?
Ref Cursor е акроним на Reference to a Cursor. Това е PL/SQL тип данни, използвайки който можете да декларирате специален тип променлива, наречена Cursor Variable.
Свързани ли са помежду си Cursor Variable и Ref Cursor?
Това е много добър въпрос. Видях в много книги, че и двете имена се използват взаимозаменяемо. И двете обаче са две отделни, но взаимозависими теми.
От една страна курсорната променлива е като указател, който се отнася до различна контекстна област в SGA. Докато Ref Cursor е тип данни, който съдържа стойност на курсора.
Тогава как курсорната променлива и референтният курсор са взаимозависими един от друг?
Както бе споменато по-горе, променливите на курсора се декларират с помощта на Ref Cursors. Следователно можем да кажем, че курсорните променливи в Oracle Database съществуват под формата на референтни курсори
Дефиниция на променлива на курсора
Използвайки цялата по-горе информация, можем да дефинираме променлива на курсора като:Променлива от Ref Cursor Type се нарича Cursor Variable.
Какъв е синтаксисът за деклариране на Ref Cursor?
Ето обобщения синтаксис за деклариране на Ref курсори в Oracle Database:
DECLARE TYPE [cursor_variable_name] IS REF CURSOR [RETURN (return_type)];
Синтаксисът може да бъде модифициран и използван в зависимост от това какъв тип референтни курсори искате да използвате във вашето приложение. След като казахме това, нека видим видовете референтни курсори, налични в Oracle Database.
Колко вида PL/SQL референтни курсори имаме?
Има два типа референтни курсори в PL/SQL. Това са:
- Силен референтен курсор и
- Слаб референтен курсор
Какво е Strong Ref Cursor в Oracle Database?
Всеки Ref Cursor, който има фиксиран тип връщане, се нарича Strong Ref Cursor.
Освен това такива референтни курсори могат да се използват само с някои оператори SELECT. Освен това, резултатът от типа данни на израза SELECT трябва да съвпада с този, който е бил фиксиран по време на декларацията на силния курсор.
Синтаксис на силни референтни курсори в PL/SQL
Ето синтаксисът на курсора за силен ref.
DECLARE TYPE cursor_variable_name IS REF CURSOR RETURN (return type);
Клаузата за връщане играе много важна роля при декларирането на Ref Cursor. Това ограничава неговия обхват. И прави вашия Ref Cursor ограничен само до онези оператори SELECT, които връщат резултата, чийто тип данни съвпада с този, който сте посочили в клаузата RETURN, докато го декларирате.
Също така типът на връщане на Ref Cursor трябва винаги да е тип на данни за запис. Тя може да бъде структура на запис на таблица или дефинирана от потребителя структура на запис.
Какво е слаб референтен курсор в Oracle Database?
За разлика от силните референтни курсори, слабите референтни курсори са тези, които нямат никакъв тип връщане. С други думи, тези референтни курсори, които нямат фиксиран тип връщане, се наричат слаби референтни курсори.
Тъй като слабите референтни курсори нямат фиксиран тип връщане, те са отворени за всички оператори SELECT. И това ги прави един от най-използваните референтни курсори в PL/SQL.
Синтаксис на слаби референтни курсори в PL/SQL
DECLARE TYPE ref_cursor_name IS REF CURSOR;
С изключение на липсващата клауза за връщане, синтаксисът е почти подобен на силните референтни курсори.
Канадско проучване предполага, че хората са биологично настроени да бъдат мързеливи. Освен това какъв е смисълът да имаме компютър с всички тези мощности за обработка, когато трябва да свършим цялата упорита работа по декларирането на тип Ref указател и след това да създадем променлива.
Е, скъпи мои приятели, ако сте от онези, които искат да се въздържат от цялата упорита работа по създаването на променлива на курсора, тогава Oracle PL/SQL има опция за вас. Тази опция ще ви служи като имплицитно създадена променлива на курсора. И така, нека видим какво представлява.
Sys_RefCursor
Sys Ref курсорът е вградена в Oracle променлива на курсора. Той декларира слаб референтен курсор и това също, без да декларира типа ref указател. Най-често се използва като общ курсор, който може да се предава като аргумент на съхранена подпрограма.
Това е всичко за този урок за въведението в PL/SQL Ref Cursors в Oracle Database. Останете на линия, тъй като в предстоящите уроци ще направим практическа демонстрация на Ref Cursor в Oracle PL/SQL.
Можете също да се обърнете към видеоурока по същата тема в моя канал в YouTube за повече подробности.
Благодаря, че се отби. Приятен ден!