Въведение в курсорите в PL / SQL

PL / SQL е един от най-използваните езици за програмиране, когато става въпрос за програмиране на база данни. Някои важни концепции на PL / SQL трябва да се научат и разбират ясно от PL / SQL програмист, за да ги използват правилно. Курсорът е един от тях. В PL / SQL програмата SQL операторите трябва да бъдат изпълнени в края. Курсорът е точно като показалец, който се използва за насочване към контекстната област, създадена от Oracle за изпълнение на SQL оператора. Курсор държи всички редове, върнати след обработката на SQL изрази. Наборът от реда, който се държи от Cursor, се нарича Active Set. Курсорът може да бъде именуван, за да го използва по-нататък в програмата от програмист. В тази тема ще научим за курсорите в PL / SQL.

Видове курсори

Има два типа курсори, използвани в PL / SQL програмиране:

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

Както показва името, имплицитните курсори са онези курсори, които автоматично се създават от Oracle, когато се изпълняват DML изрази като INSERT, DELETE, UPDATE. Когато програмистът не създаде курсор, Oracle сам по себе си го създава, за да държи редовете, засегнати от DML изразите. Тези курсори не могат да бъдат именувани от програмиста и следователно не могат да бъдат препращани и използвани на друго място в кода. Въпреки че Oracle предоставя някои атрибути за извършване на някои операции върху него като

% FOUND, % NOTFOUND, % ROWCOUNT, % ISOPEN.

S.No.Атрибутописание
1.% намерениВръща True, ако DML изявления като INSERT,

DELETE, UPDATE засягат един или повече редове или оператор SELECT връща един или повече редове. В противен случай тя връща False

2.% NOTFOUNDТо е обратното на атрибута% FOUND, Връща True, ако никой от редовете не е засегнат от DML оператор или SELECT оператор не връща резултати. В противен случай тя връща False.
3.%Е ОТВОРЕНОВ случай на имплицитни курсори, той винаги връща False, защото Oracle затваря курсора непосредствено след изпълнението на SQL операторите.
4.% ROWCOUNTТя връща броя на реда Т.е. броя на редовете, които са засегнати от споменатия DML
извлечения от програмиста в PL / SQL кода като INSERT, DELETE и UPDATE или броя редове, които се връщат от оператора SELECT INTO.
пример

Сценарий: За актуализиране на оценките на всички студенти в таблица „студент“ на английски Тема с колона „Тема“ с 10.

DECLARE
affected_rows number(4);
BEGIN
UPDATE students SET marks = marks+10 where subject = 'English';
IF​ sql%NOTFOUND THEN dbms_output.put_line ('No records of English subject are updated');
ELSIF sql%FOUND THEN​ affected rows: = affected rows%rowcount
dbms_output.put_line('Congrats ..Records Updated' || affected_rows);
END IF;
END;
/

2. Изрични курсори

Изричните курсори са онези курсори, които са определени от програмистите, за да имат по-голям контрол върху контекстната област (където се съхраняват резултатите от SQL заявки). Тези курсори трябва първо да бъдат дефинирани в декларационния блок на PL / SQL програмата. Той е създаден за SQL операторите, които връщат повече от един ред след обработката им. Има специфична процедура, която трябва да се спазва за използване на явен курсор. Стъпките за използване на явния курсор са споменати по-долу:

1. Деклариране на курсора: Използва се за даване на име на контекстната област / курсора заедно с оператора select, който трябва да бъде изпълнен.

Синтаксис

CURSOR cursor_name IS SELECT statement;

2. Отворете курсора: Отваряйки курсор, разпределя паметта към него и го предоставя на разположение за извличане на записи, върнати от SQL оператора.

Синтаксис

OPEN cursor_name;

3. Извличане на курсора: В този процес се осъществява достъп до един ред наведнъж. Операторът SELECT се изпълнява и извлечените редове се съхраняват в контекстната област. Той извлича записите и ги присвоява на дефинирана променлива.

Синтаксис

FETCH cursor_name INTO variable;

4. Затворете курсора: Тази стъпка се използва за затваряне на курсора, отворен по-горе, за разместване на паметта, след като всички съхранени редове са изтеглени успешно.

Синтаксис

CLOSE cursor_name;

пример

Сценарий: Получете името, адреса и общия процент на учениците в таблица

„ученик“ с колони „име“, „адрес“ и „процент“

DECLARE
stud_name student.name%type; stud_address student.address%type;
stud_percentage student.percentage%type;
CURSOR stud IS SELECT name, address, percentage FROM student; BEGIN
Open stud;
LOOP
FETCH stud into stud_name, stud_address, stud_percentage;
EXIT when stud%NOTFOUND;
dbms_ouput.put_line(stud_name || ' ' || stud_address || ' ' || stud_percentage);
END LOOP;
CLOSE stud;
END
/

Действия на курсора

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

По-долу са споменати някои от действията на курсора:

  1. Деклариране на курсор: Важно е да декларирате курсор, преди да го използвате. Курсор се декларира чрез дефиниране на SQL оператора, който трябва да се обработи.
  2. Отваряне на курсор: След деклариране, курсорът се отваря и попълва от връщането на данни чрез обработката на SQL оператор.
  3. Извличане на курсор: След отваряне на курсора, изходните редове трябва да бъдат извлечени един по един, за да се извърши всякаква манипулация, ако е необходимо.
  4. Затворете курсор: След всички манипулации с данни. Създаден курсор трябва да бъде затворен
  5. Разделяне: Тази стъпка включва изтриване на курсора и освобождава всички ресурси, държани от него.

Значение на курсора в PL / SQL

Посочването на мястото на паметта и съответното изпълнение на действия е една от важните задачи във всеки език за програмиране. В PL / SQL се прави от курсори. Курсорите играят решаваща роля, когато става въпрос за изпълнение на различната задача, като дават име на зоната на паметта (контекстната област), където се записва резултатът от SQL заявки. Можем да осъществим достъп до записите един по един и да извършим всякакви манипулации в него, ако е необходимо, или да ги покажем на конзолата съответно. Явните курсори са по-ефективни, дават по-програмен контрол и са по-малко уязвими към грешките в данните, така че те са много полезни при PL / SQL програмирането, отколкото имплицитните.

заключение

Програмирането на база данни е много популярно в наши дни и PL / SQL е един от езиците, които трябва да се използват много добре в него. Курсорите дават по-голям контрол на програмиста за достъп до извлечените данни. За да може един програмист да работи на PL / SQL, важно е да знае използването и значението на Cursor за ефективна работа.

Препоръчителни статии

Това е ръководство за курсори в PL / SQL. Тук обсъждаме типовете курсори, използвани в PL / SQL програмиране с Cursor Actions и важността на курсора. Може да разгледате и следните статии, за да научите повече -

  1. Видове съединения в SQL
  2. SQL Insert Query
  3. Таблица в SQL
  4. Подметка в SQL
  5. Топ 6 вида съединения в MySQL с примери