Database
 sql >> база данни >  >> RDS >> Database

Какво е курсор в SQL и как да го приложим?

Курсорите в SQL са неразделна част от всяка база данни, която основно помага на потребителя да преминава през базата данни без много караница. Чрез посредничеството на тази статия за Cursor в SQL ще ви дам всички необходими подробности, които трябва да ви трябват, преди да си намокрите краката с него.

По-долу са темите, които ще обсъждам в тази статия:

  • Какво е курсор в SQL?
  • Типове SQL курсори
  • Синтаксис на SQL курсор
  • Жизнен цикъл на курсора

Какво е курсорът в SQL?

Курсорът в SQL е обект, който позволява преминаване през редовете на всеки набор от резултати. С това можете да обработите отделен ред от база данни, който се връща от заявка. Това е временна работна област или контекстна област, която се създава в системата на паметта по време на изпълнението на SQL оператор, който съхранява извлечените данни от базата данни и подпомага манипулирането им. Можете да го разглеждате като подреждане на редове заедно с показалец, сочещ към настоящия ред. Курсорът е обект на база данни, който може да съдържа повече от един ред, но може да обработва само един ред в даден момент. Наборът от редове, държани от задържания на курсора, е известен като активен комплект. По този начин можете да контролирате записа на таблица в единична техника, т.е. един ред във всеки момент от време.

След като вече сте запознати с това какво е курсор в SQL, нека да продължим напред и да разгледаме различните му типове.

Типове SQL курсор

SQL предоставя два типа курсори, които изброих по-долу:

  1. Неявен курсор

Винаги, когато 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.
  1. Явен курсор

Този тип курсор се генерира всеки път, когато данните се обработват от потребител чрез SQL блок. Като цяло, използването на заявката SELECT задейства създаването на изричен курсор и може да съдържа повече от един ред, но да обработва само един по един. Този тип курсор се използва за задържане на записите, присъстващи в колона. Това позволява на програмистите да създадат именувана контекстна област за изпълнение на техните DML операции за по-добър контрол. Освен това той трябва да бъде дефиниран в SQL блока и от своя страна да бъде създаден за заявка SELECT, използвайки този код.

За да разберем по-добре курсора, нека сега да видим какъв е синтаксисът на курсора в SQL.

Синтаксис на SQL курсор

По-долу е общият синтаксис за създаване на изричен курсор.

CURSOR cursorName IS selectStatement;

Тук:

cursorName – Това представлява валидно име за курсора

selectStatement – ​​Това представлява заявка за избор, която ще върне няколко реда

Нека сега да продължим с тази статия и да видим жизнения цикъл на SQL курсора.

Жизнен цикъл на курсора

По принцип има 5 етапа в жизнения цикъл на курсора в SQL, които изброих по-долу:

  1. Деклариране
DECLARE cursorName CURSOR
FOR selectStatement;

Тази стъпка ще ви помогне да посочите името и типа данни на курсора, а операторът SELECT ще дефинира неговия набор от резултати.

  1. Отворено
OPEN cursorName;

Тази стъпка ще ви позволи да отворите и попълните курсора, като я изпълните.

  1. Извличане
FETCH NEXT FROM cursor INTO variableList;

Тази стъпка ще извлече ред от курсора и ще го съхрани в една или повече променливи.

[По избор] Проверка на състоянието

WHILE @@FETCH_STATUS = 0
BEGIN
FETCH NEXT FROM cursorName;
END;

Тази функция връща състоянието на последния израз FETCH, който е бил изпълнен спрямо курсора. В случай, че тази функция върне 0, това означава, че операцията FETCH е била успешна. За да се извлекат всички редове от курсора, се използва клаузата WHILE.

  1. Затвори
CLOSE cursorName;

Тази стъпка ще ви помогне да затворите курсора, след като операциите са завършени.

  1. Отмяна
DEALLOCATE cursor_name;

Тази стъпка ще помогне за освобождаването на курсора и освобождаването на място в паметта.

С това бих искал да завърша тази статия за Cursor в SQL. Надявам се тази статия да ви е помогнала да добавите стойност към знанията си. За повече информация относно SQL или бази данни, можете да се обърнете към нашия изчерпателен списък за четене тук:Бази данни Edureka .

Основи на SQL за начинаещи | Научете SQL | SQL урок за начинаещи | Едуреката

Този видеоклип на Edureka за „Основи на SQL за начинаещи“ ще ви помогне да разберете основите на SQL, както и SQL заявките, които са много популярни и важни.

Ако искате да получите структурирано обучение за MySQL, разгледайте нашето обучение за сертифициране на MySQL DBA която идва с обучение на живо от инструктор и реален опит с проекти. Това обучение ще ви помогне да разберете MySQL в дълбочина и ще ви помогне да постигнете майсторство по темата.

Имате въпрос към нас? Моля, споменете го в секцията за коментари на „Курсор в SQL ” и ще се свържа с вас.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL DROP TABLE за начинаещи

  2. Острова T-SQL предизвикателство

  3. SQL СЪЗДАВАНЕ НА ТАБЛИЦА... КАТО Инструкция SELECT

  4. Попълване на Teradata с реалистични тестови данни De Novo

  5. Научете как да обработвате изключения в PL/SQL