Увод у курсоре у ПЛ / СКЛ

ПЛ / СКЛ је један од најчешће коришћених програмских језика када је у питању програмирање база података. Неке важне концепте ПЛ / СКЛ програмер мора ПЛ и СКЛ јасно научити и разумети како би их правилно користио. Курсор је један од њих. У ПЛ / СКЛ програму на крају се морају извршити СКЛ изрази. Курсор је баш попут показивача који се користи да покаже подручје контекста, које је Орацле створио да изврши СКЛ израз. Курсор садржи све редове враћене након обраде СКЛ израза. Скуп реда који држи Цурсор назива се активним сетом. Курсор се такође може именовати да би га програмер могао даље користити у програму. У овој теми ћемо сазнати о Курсорима у ПЛ / СКЛ-у.

Врсте курсора

Постоје 2 врсте курсора који се користе у ПЛ / СКЛ програмирању:

1. Имплицитни курсори

Као што име говори, имплицирани курсори су они курсори које аутоматски креира Орацле када се изврше било који ДМЛ исказ попут ИНСЕРТ, ДЕЛЕТЕ, УПДАТЕ. Када програмер не креира ниједан курсор, Орацле сам по себи креира да држи редове на које утичу ДМЛ изрази. Програмер не може именовати ове курсоре па их стога не могу упутити и користити на неком другом месту у коду. Иако Орацле пружа неке атрибуте за извођење неких операција на њему

% ФОУНД, % НОТФОУНД, % РОВЦОУНТ, % ИСОПЕН.

С.Но.АтрибутиОпис
1.%НАШАОВраћа Труе ако ДМЛ изјаве попут ИНСЕРТ,

ДЕЛЕТЕ, УПДАТЕ утичу на један или више редова или наредба СЕЛЕЦТ враћа један или више редака. У супротном, враћа лажно

2%НИЈЕ ПРОНАЂЕНСупротно је атрибуту% ФОУНД, враћа се труе ако изјава ДМЛ не утиче на било који ред или изјава СЕЛЕЦТ не даје резултате. У супротном, враћа лажно.
3.%ЈЕ ОТВОРЕНУ случају имплицитних курсора, увек враћа Фалсе јер Орацле затвара курсор одмах након извршења СКЛ израза.
4.% РОВЦОУНТВраћа број реда. То јест, бројање редова на које утиче поменути ДМЛ
изјаве програмера у ПЛ / СКЛ коду као што су ИНСЕРТ, ДЕЛЕТЕ и УПДАТЕ или број редова који су враћени наредбом СЕЛЕЦТ ИНТО.
Пример

Сценариј: Ажурирати оцјене свих ученика у табели „студент“ на енглеском Предмету са колоном „предмет“ до 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. експлицитни курсори

Експлицитни курсори су они курсори које програмери дефинирају како би имали већу контролу над контекстуалном површином (гдје су похрањени резултати СКЛ упита). Ове курсоре потребно је прво дефинисати у блоку декларације програма ПЛ / СКЛ. Створена је за СКЛ изјаве које враћају више реда након обраде. Постоји посебан поступак који се мора поштовати за коришћење експлицитног курсора. Кораци за употребу експлицитног курсора су наведени ниже:

1. Прогласите курсор: Користи се за давање имена контекстном подручју / показивачу заједно са изабраном изјавом коју треба извршити.

Синтакса

CURSOR cursor_name IS SELECT statement;

2. Отворите курсор: Отварајући курсор, додељује му меморију и ставља га на располагање за преузимање записа враћених СКЛ изразом.

Синтакса

OPEN cursor_name;

3. Дохвати курсор: У овом процесу се приступа истодобно једном реду. Изјава СЕЛЕЦТ се извршава и дохваћени редови се чувају у подручју контекста. Дохваћа записе и додељује их дефинисаној варијабли.

Синтакса

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
/

Радње курсора

За разлику од СКЛ-а који ради у свим редовима у резултатима постављеним одједном, курсор се углавном користи у сценаријима када програмер жели обрадити и дохватити податке једног реда у исто вријеме.

Испод су наведене неке од активности курсора:

  1. Проглашавање курсора: Важно је декларисати курсор пре употребе. Курсор се декларише дефинисањем СКЛ израза који треба обрадити.
  2. Отварање курсора: Након декларације курсор се отвара и попуњава повратком података обрадом СКЛ израза.
  3. Дохвати курсор: Након отварања курсора, излазни редови морају бити преузети један по један како би извршили било какву манипулацију, ако је потребно.
  4. Затворите курсор: После свих манипулација подацима. Курсор креиран треба затворити
  5. Додели локацију: Овај корак укључује брисање курсора и ослобађа све ресурсе које поседује.

Значај курсора у ПЛ / СКЛ

Показивање на локацију меморије и извршавање акција у складу с тим један је од важних задатака у било којем програмском језику. У ПЛ / СКЛ, то раде Цурсорс. Курсори играју кључну улогу када је у питању извршавање различитих задатака давањем имена меморијском подручју (контекстном подручју) где се спремају резултати СКЛ упита. Записима можемо приступити један за другим и по потреби извршити било какве манипулације у њима или их приказати на конзоли. Експлицитни курсори су ефикаснији, дају више програмске контроле и мање су рањиви на грешкама у подацима, тако да су корисни у ПЛ / СКЛ програмирању у односу на имплицитне.

Закључак

Програмирање база података је врло популарно ових дана и ПЛ / СКЛ је један од језика који би се у њему требало веома добро користити. Курсори дају већу контролу програмеру за приступ добијеним подацима. Да би програмер радио на ПЛ / СКЛ, важно је знати употребу и важност курсора за ефикасан рад.

Препоручени чланци

Ово је водич за курсоре у ПЛ / СКЛ. Овдје разговарамо о врстама курсора који се користе у ПЛ / СКЛ програмирању с Радњама курсора и важности курсора. Можда ћете такође погледати следеће чланке да бисте сазнали више -

  1. Врсте придруживања у СКЛ-у
  2. СКЛ Инсерт Куери
  3. Табела у СКЛ-у
  4. Вилдцард у СКЛ-у
  5. Топ 6 врста придруживања у МиСКЛ-у са примерима

Категорија: