Курсорите в SQL са неразделна част от всяка база данни, която основно помага на потребителя да преминава през базата данни без много караница. Чрез посредничеството на тази статия за Cursor в SQL ще ви дам всички необходими подробности, които трябва да ви трябват, преди да си намокрите краката с него.
По-долу са темите, които ще обсъждам в тази статия:
- Какво е курсор в SQL?
- Типове SQL курсори
- Синтаксис на SQL курсор
- Жизнен цикъл на курсора
Какво е курсорът в SQL?
Курсорът в SQL е обект, който позволява преминаване през редовете на всеки набор от резултати. С това можете да обработите отделен ред от база данни, който се връща от заявка. Това е временна работна област или контекстна област, която се създава в системата на паметта по време на изпълнението на SQL оператор, който съхранява извлечените данни от базата данни и подпомага манипулирането им. Можете да го разглеждате като подреждане на редове заедно с показалец, сочещ към настоящия ред. Курсорът е обект на база данни, който може да съдържа повече от един ред, но може да обработва само един ред в даден момент. Наборът от редове, държани от задържания на курсора, е известен като активен комплект. По този начин можете да контролирате записа на таблица в единична техника, т.е. един ред във всеки момент от време.
След като вече сте запознати с това какво е курсор в SQL, нека да продължим напред и да разгледаме различните му типове.
Типове SQL курсор
SQL предоставя два типа курсори, които изброих по-долу:
-
Неявен курсор
Винаги, когато DML операции като INSERT, UPDATE и DELETE се обработват в базата данни, имплицитните курсори се генерират автоматично и се използват от рамката. Тези видове курсори се използват за вътрешна обработка и не могат да бъдат контролирани или препращани от друга кодова област. Неявните курсори в SQL просто държат засегнатите редове от операцията и могат да се отнасят само до най-новия курсор, като използват атрибутите на курсора, които са показани по-долу в таблицата.
Атрибут | Описание |
% НАМЕРЕН | Той ще върне TRUE, в случай че оператор INSERT, UPDATE или DELETE засяга един или повече редове или оператор SELECT INTO връща един или повече редове. В други случаи ще върне FALSE. |
%NOTFOUND | Те технически е обратното на атрибута %FOUND. Той връща TRUE в случай, че оператор INSERT, UPDATE или DELETE не засяга редове или оператор SELECT INTO не връща редове. В противен случай връща просто FALSE. |
%ISOPEN | Този атрибут винаги ще връща FALSE за неявни курсори, тъй като SQL курсорът автоматично се затваря веднага след изпълнението на свързания SQL оператор. |
%ROWCOUNT | Връща общия брой засегнати редове от оператор INSERT, UPDATE или DELETE или редовете, върнати от оператор SELECT INTO. |
-
Явен курсор
Този тип курсор се генерира всеки път, когато данните се обработват от потребител чрез SQL блок. Като цяло, използването на заявката SELECT задейства създаването на изричен курсор и може да съдържа повече от един ред, но да обработва само един по един. Този тип курсор се използва за задържане на записите, присъстващи в колона. Това позволява на програмистите да създадат именувана контекстна област за изпълнение на техните DML операции за по-добър контрол. Освен това той трябва да бъде дефиниран в SQL блока и от своя страна да бъде създаден за заявка SELECT, използвайки този код.
За да разберем по-добре курсора, нека сега да видим какъв е синтаксисът на курсора в SQL.
Синтаксис на SQL курсор
По-долу е общият синтаксис за създаване на изричен курсор.
CURSOR cursorName IS selectStatement;
Тук:
cursorName – Това представлява валидно име за курсора
selectStatement – Това представлява заявка за избор, която ще върне няколко реда
Нека сега да продължим с тази статия и да видим жизнения цикъл на SQL курсора.
Жизнен цикъл на курсора
По принцип има 5 етапа в жизнения цикъл на курсора в SQL, които изброих по-долу:
- Деклариране
DECLARE cursorName CURSOR FOR selectStatement;
Тази стъпка ще ви помогне да посочите името и типа данни на курсора, а операторът SELECT ще дефинира неговия набор от резултати.
- Отворено
OPEN cursorName;
Тази стъпка ще ви позволи да отворите и попълните курсора, като я изпълните.
- Извличане
FETCH NEXT FROM cursor INTO variableList;
Тази стъпка ще извлече ред от курсора и ще го съхрани в една или повече променливи.
[По избор] Проверка на състоянието
WHILE @@FETCH_STATUS = 0 BEGIN FETCH NEXT FROM cursorName; END;
Тази функция връща състоянието на последния израз FETCH, който е бил изпълнен спрямо курсора. В случай, че тази функция върне 0, това означава, че операцията FETCH е била успешна. За да се извлекат всички редове от курсора, се използва клаузата WHILE.
- Затвори
CLOSE cursorName;
Тази стъпка ще ви помогне да затворите курсора, след като операциите са завършени.
- Отмяна
DEALLOCATE cursor_name;
Тази стъпка ще помогне за освобождаването на курсора и освобождаването на място в паметта.
С това бих искал да завърша тази статия за Cursor в SQL. Надявам се тази статия да ви е помогнала да добавите стойност към знанията си. За повече информация относно SQL или бази данни, можете да се обърнете към нашия изчерпателен списък за четене тук:Бази данни Edureka .
Основи на SQL за начинаещи | Научете SQL | SQL урок за начинаещи | Едуреката
Този видеоклип на Edureka за „Основи на SQL за начинаещи“ ще ви помогне да разберете основите на SQL, както и SQL заявките, които са много популярни и важни.
Ако искате да получите структурирано обучение за MySQL, разгледайте нашето обучение за сертифициране на MySQL DBA която идва с обучение на живо от инструктор и реален опит с проекти. Това обучение ще ви помогне да разберете MySQL в дълбочина и ще ви помогне да постигнете майсторство по темата.
Имате въпрос към нас? Моля, споменете го в секцията за коментари на „Курсор в SQL ” и ще се свържа с вас.