pl sql collections nested table
Научите основе ПЛ СКЛ колекција, метода сакупљања, низа, угнежђену табелу и асоцијативног низа уз помоћ примера кода:
У ПЛ / СКЛ потпрограми туториал оф ПЛ / СКЛ серија , научили смо о процедурама и функцијама, различитим методама прослеђивања параметара и како створити / избрисати процедуре и функције у ПЛ / СКЛ-у.
У овом чланку ћемо разговарати о ПЛ СКЛ колекцијама и сродним концептима. Такође ћемо објаснити концепт променљивих, угнежђених табела и индексних табела које су доступне у ПЛ / СКЛ.
Поред тога, истражићемо неке уграђене изузетке и методе прикупљања.
Шта ћете научити:
- ПЛ СКЛ колекције
- Угњежђене табеле у ПЛ / СКЛ
- Асоцијативни низ или табеле индексирања
- Варијације у ПЛ / СКЛ
- Закључак
ПЛ СКЛ колекције
Колекција је група елемената хомогених типова података. Генерално садржи низове, листе, скупове итд. Сваки од елемената има одређени индекс који одражава његов положај.
ПЛ СКЛ колекције су следећих врста:
- Асоцијативни низ / индексне табеле
- Угњежђене табеле.
- Варијабле.
ПЛ СКЛ колекције се обично користе за складиштење и манипулацију великим деловима података, користећи кључну реч БУЛК ЦОЛЛЕЦТ у програму Орацле.
Методе прикупљања
Пл / СКЛ има неке уграђене методе прикупљања које су наведене у наставку.
Сл. Не. | Име | Описи |
---|---|---|
7 | следећи (м) | Даје индекс који следи мтх индекс. |
1 | рачунати | Даје број елемената присутних у колекцији. |
два | граница | Проверава величину колекције. |
3 | постоји (м) | Враћа труе ако мтх елемент присутан у колекцији елсе враћа фалсе. |
4 | први | Даје почетни индексни број у колекцији са целобројним индексом. |
5 | последњи | Даје крајњи индексни број у колекцији са целобројним индексом. |
6 | проширити | Додаје НУЛЛ елемент на крај колекције. |
8 | претходни (м) | Даје индекс који претходи индексу м. |
9 | трим | Брише елемент са краја колекције. |
10 | трим (м) | Брише м елемената са краја колекције. |
Једанаест | избрисати | Брише све елементе из колекције, подешавајући број на 0. |
12 | избриши (м) | Брише мтх елемент из колекције, ако је мтх елемент НУЛЛ, тада се не извршава никаква радња. |
13 | избриши (м, к) | Брише елемент са мтх на ктх позицију. |
14 | продужити (м) | Додаје м елемент на крај колекције. |
петнаест | продужити (м, к) | Додаје м копија к-тог елемента на крај колекције. |
Изузеци од колекције
Неки од уобичајених изузетака од колекције су следећи:
- ВАЛУЕ_ЕРРОР: Овај изузетак се избацује ако индекс не може да се претвори у тип кључа или је НУЛЛ. Овај изузетак се обично покреће ако је кључ опсега типа ПЛС_ИНТЕГЕР, а индекс је изван тог опсега.
- НИЈЕ ПРОНАЂЕН НИЈЕДАН ПОДАЦИ: ПЛ / СКЛ баца овај изузетак ако или наредба СЕЛЕЦТ не дохваћа редове или програм показује на елемент који се брише у угнијежђеној табели. Овај изузетак такође може покренути елемент који је неиницијализован у индексној табели.
- ЦОЛЛЕЦТИОН_ИС_НУЛЛ: ПЛ / СКЛ избацује овај изузетак ако је збирка подразумевано НУЛЛ.
- СУБСЦРИПТ_БЕИОНД_ЦОУНТ: Овај изузетак се избацује када је индекс већи од укупног броја броја елемената у колекцији.
- СУБСЦРИПТ_ОУТСИДЕ_ЛИМИТ: Овај изузетак се избацује када индекс прелази опсег прага.
Угњежђене табеле у ПЛ / СКЛ
Угнијежђене табеле су попут табеле базе података са једним ступцем или једнодимензионалног низа где је величина низа динамичка. Његов индекс је нумеричког типа. Угнежђену табелу можемо добити у променљиву тако што ћемо редовима дати индекс који почиње са 1. Ова карактеристика чини је по природи сличном низу.
У угнежђену табелу може се сместити колона базе података. Такође се може користити за манипулацију СКЛ операцијама спајањем табела. Будући да је попут динамичког низа, тако да горња граница може бити било које величине.
Угнеждена табела може имати и густе и оскудне карактеристике сакупљања, што значи да се било који елемент може насумично избрисати (чинећи га ретким) уз помоћ ДЕЛЕТЕ поступка. Брисање података узрокује дисконтинуитет у индексу, али функција НЕКСТ помаже у преласку на следеће индексе. Будући да се подаци чувају у облику табеле, они се могу добити помоћу СЕЛЕЦТ наредби.
Угнеждена табела може се изградити на нивоу шеме или у блоку ПЛ / СКЛ. То је попут објекта базе података који је доступан унутар базе података или потпрограма.
Разлике између низа и угнежђене табеле наведене су у наставку:
- Величина угнежђених табела може се динамички повећавати. Горња граница низа је фиксна, али није фиксирана за угнежђене табеле.
- Низ има узастопне индексе, што га чини густим. Међутим, угнежђена табела је густа у време креирања, али постаје проређена када се елементи избришу између.
Синтакса угнежђене табеле:
TYPE <> IS TABLE OF <> (NOT NULL);
Ево, 'тип' је спецификатор типа. „Елемент“ је тип података.
Имплементација кода са угнежђеном табелом:
DECLARE TYPE subject IS TABLE OF VARCHAR(15); TYPE teacher IS TABLE OF VARCHAR2(20); subjectnames subject; subjectteacher teacher; summ integer; BEGIN -- adding subject and its teachers to the table subjectnames := subject('PLSQL', 'SELENIUM', 'JMETER'); subjectteacher:= teacher('Sashi', 'Mala', 'Mukund'); -- returns count of number of elements in nested table summ:= subjectteacher.count; -- printing the content to the console dbms_output.put_line('Total Number of Teachers: '|| summ); FOR i IN 1 .. summ LOOP dbms_output.put_line('Subject:'||subjectnames(i)||', Teacher:' || subjectteacher(i)); end loop; END;
Резултат горњег кода треба да буде:
Асоцијативни низ или табеле индексирања
Табела индексирања обично се назива асоцијативни низ. Што се тиче структуре, и индексна табела и угнежђене табеле су сличне и имају индекс за приступ елементима.
Асоцијативни низ представљен је паром кључ / вредност. Сваки од јединствених кључева користи се за идентификацију вредности у низу. Тип података кључа може бити низ или цео број дефинисан током његовог креирања. Кључ се додаје у индексну табелу једноставним додељивањем вредности по први пут. Да бисмо модификовали исти унос, морамо користити исти кључ.
Кључ би требао бити јединствени или као примарни кључ у табели или комбиновањем низова да би се развила јединствена вредност. Ова врста колекције има величину низа која је динамична и има ретке или густе карактеристике. Једна разлика између индексиране табеле и угнежђене табеле је та што се прва не може сачувати у колони базе података, али угнежђена табела може бити сачувана.
Асоцијативни низови омогућавају лако одржавање индекса и креирају се у ПЛ / СКЛ блоку. То је попут СКЛ табеле у којој се вредности добијају уз помоћ примарног кључа. Ово се обично користи за привремено складиштење података и може се користити уместо СКЛ табела за избегавање мрежног промета и складиштења на диску које захтевају СКЛ табеле.
Како асоцијативни низови не чувају трајне податке, они се не могу користити са СКЛ изразима попут СЕЛЕЦТ и ИНСЕРТ. Међутим, могу се учинити непрекидним за сесију базе података тако што ће њихов тип података декларисати као пакет и дефинисати их унутар тела пакета.
Синтакса индексне табеле:
TYPE type IS TABLE OF element (NOT NULL) INDEX BY (BINARY_INTEGER | PLS_INTEGER | VARCHAR2(size)); INDEX BY key;
Ево, „Кључ“ је нумерички. Може бити БИНАРИ_ИНТЕГЕР или ПЛС_ИНТЕГЕР. Његов тип података може бити варцхар, варцхар2, лонг или стринг. Кључ заснован на варцхар-у треба поменути по дужини.
„Елемент“ је тип података.
„Величина“ је максималан број елемената. То је позитиван цео број.
'тип' је спецификатор типа.
Имплементација кода са индексном табелом:
DECLARE TYPE age IS TABLE OF NUMBER INDEX BY VARCHAR(25); age_empl age; employee VARCHAR(25); BEGIN -- adding employee details to the table age_empl('Sam') := 30; age_empl('Venu') := 35; -- printing the table contents in the console employee := age_empl.FIRST; WHILE employee IS NOT null LOOP dbms_output.put_line ('Employee name is ' || employee || ' and age is ' || TO_CHAR(age_empl(employee))); employee := age_empl.NEXT(employee); END LOOP; END; /
Резултат горњег кода треба да буде:
Варијације у ПЛ / СКЛ
Варраис смештају фиксни број елемената и слични су једнодимензионалном низу. Међутим, број елемената се може изменити током извођења. То је узастопни скуп елемената сличних типова података. Може се чувати у табели базе података којом се може руковати уз помоћ СКЛ израза. Али поступак није тако лак и флексибилан као у угнежђеној табели.
Максимална величина Варраи-а је дефинисана у дефиницији његовог типа. Има један за другим меморијски аранжман који почиње са 1 индексом, а најмања адреса локације показује на почетни елемент, а највиша адреса локације упућује на крајњи елемент. Сви елементи Варраи-а идентификују се индексом.
Ова врста колекције има нумерички индекс и има густе карактеристике. Стога се елементи низа не могу брисати између. Или треба избрисати читав Варраи или његов крај може бити обрезан. Због својих густих карактеристика, има мању флексибилност употребе.
Варраи се може креирати или у ПЛ / СКЛ блоку или на нивоу шеме. Третира се као објект базе података којем се може приступити у бази података или у оквиру потпрограма. Варраи се користи чешће када нам је позната величина низа. Требало би га иницијализовати пре њихове употребе и може се покренути уз помоћ конструктора. Његова вредност је НУЛЛ када је декларисана и треба је иницијализовати пре позивања на њене елементе.
Синтакса Варраи:
TYPE <> IS VARYING ARRAY (<>) OF <> (NOT NULL);
Ево,
'тип' је спецификатор типа.
„Елемент“ је тип података.
„Величина“ је максималан број елемената у низу. То је позитиван цео број.
Изјава и иницијализација променљивих променљивих
Након креирања Варраи-а, можемо га пријавити на начин описан у наставку:
Синтакса:
name type_n (:= type_n(...));
Ево,
‘Име’ је назив Варраи.
„Типе_н“ је тип Варраи.
„Типе_н (…)“ је конструктор типа Варраи. Спискове аргумената помиње сепаратор зарезом и типа Варраи.
Морамо да иницијализујемо променљиву Варраи пре него што је употребимо, у супротном се добија неиницијализована грешка колекције. Иницијализација се врши на начин описан у наставку.
Синтакса:
name type_n := type_n();
Ово ће иницијализовати променљиву са нула елемената. Да би попунили елементе у променљивим варијабле, синтакса је:
name type_n := type_n(e1, e2, ...);
Приступ елементима низа
Елементима се може приступити доле описаним поступком:
име (м); где је м индекс елемената који почиње са 1 и завршава се максималним бројем броја елемената типа Варраи. У случају да је м изван опсега 1 и максималног броја елемената, СУБСЦРИПТ_БЕИОНД_ЦОУНТ изузетак баца ПЛ / СКЛ.
Величина Варраи-а се може изменити уз помоћ израза АЛТЕР.
Имплементација кода са АЛТЕР.
CREATE Or REPLACE TYPE names AS VARRAY(2) OF VARCHAR(5); /
Излаз горњег кода треба да буде.
оквир за управљање подацима у селену вебдривер
Имплементација кода са Варраи:
DECLARE type countrynames IS VARRAY(3) OF VARCHAR2(50); type currency IS VARRAY(3) OF VARCHAR2(15); country countrynames; cur currency; addition integer; BEGIN -- adding country and its currency to the table country := countrynames('INDIA', 'USA', 'UK'); cur:= currency('INR', 'DOLLAR', 'POUND'); -- returns count of number of countries in varray addition := country.count; -- printing the content to the console dbms_output.put_line('Total Number of countries : '|| addition); FOR i in 1 .. addition LOOP dbms_output.put_line('Country: ' || country(i) || ' ,Currency : ' || cur(i)); END LOOP; END; /
Резултат горњег кода треба да буде:
Разлике између променљивих и угнежђених табела
Разлике су следеће:
- Док радимо на сценарију у којем је познат број елемената и они су поредани секвенцијално, обично се користе променљиви. Варраи који је ускладиштен у бази података одржава своје индексе и секвенце. Увек се одржава као један објект. Док се угнежђене табеле користе када бројање броја елемената није ограничено.
- Угнеждена табела има ретке карактеристике које јој омогућавају да уклони било који елемент из било ког положаја, а не увек са краја. Редослед и индекс угнежђене табеле се не одржавају када се чува у бази података. Елементи Варраи-а се увек одржавају у низу.
Разлике између асоцијативних низова и угнежђених табела
Разлике су следеће:
- Угњежђене табеле се могу чувати у колони базе података, али асоцијативни низови не. Угнијежђене табеле одржавају одговарајуће односе података који се непрекидно чувају.
- Асоцијативни низови су добри за мале претраживачке табеле где се колекција може уградити у меморију сваки пут када се пакет покрене или се позове процедура. Добар су избор када се величина претходно не зна. Вредности индекса асоцијативног низа су флексибилне јер индекси овог низа нису у низу или могу бити негативни или низ уместо броја.
Често постављана питања и одговори
П # 1) Зашто користимо колекције у ПЛ / СКЛ?
Одговор: Постоје три врсте колекција - угнежђене табеле, асоцијативни низови и променљиви. У угнежђене табеле се може сместити случајан број елемената. Варијабле могу да чувају фиксни број елемената, а асоцијативни низови нам омогућавају да претражујемо елементе са случајним бројевима и низовима.
П # 2) Шта је угнежђена табела у ПЛ / СКЛ?
Одговор: Угнеждена табела је једнодимензионалне природе и њена величина не остаје фиксна. Њима се може приступити у СКЛ и ПЛ / СКЛ блоковима. Може се користити у записима, дефиницијама објеката и табелама.
П # 3) Шта је скупна колекција у Орацле ПЛ / СКЛ?
Одговор: Скупна колекција је метода за добијање података када ПЛ / СКЛ механизам обавести СКЛ мотор да акумулира више редова одједном и ускладишти их у колекцији.
П # 4) Зашто је скупљање података брже у Орацле-у?
Одговор: Скупно прикупљање побољшава перформансе смањењем интеракције између ПЛ / СКЛ мотора и базе података.
П # 5) Шта је Варраи у ПЛ / СКЛ?
Одговор: То је ПЛ / СКЛ структура података која се користи за чување хомогене колекције елемената истог типа података у низу. Углавном се користи за чување уређеног скупа података.
П # 6) Можемо ли избрисати елемент из Варраи-а у Орацле-у?
Одговор: Не можемо директно мењати или брисати елементе у Варраи-у уз помоћ СКЛ израза. Морамо одабрати Варраи из табеле, изменити га у ПЛ / СКЛ, а затим изменити табелу и сачувати у новом Варраиу.
П # 7) Која је разлика између угнежђене табеле и низа?
Одговор: Разлике су наведене у наставку:
- Варраи узимамо када је број елемената познат од раније. Ово ограничење није могуће у угнежђеним табелама.
- У Варраи-у се елементи користе у низу. Угнеждена табела има и густе и ретке карактеристике.
- Елементи су увек поређани у Варраи. Елементи могу или не морају бити у реду у угнежђеној табели.
Закључак
У овом упутству детаљно смо разговарали о неким основним концептима ПЛ / СКЛ-а који су од суштинског значаја за развијање знања о њему.
Обрадили смо следеће теме наведене у наставку:
- Основно разумевање ПЛ СКЛ колекција (методе и изузеци).
- Варијабле.
- Угњежђене табеле
- Индексне табеле
<< PREV Tutorial |. | СЛЕДЕЋА Лекција >>
Препоручено читање
- Типови података низа - инт низ, двоструки низ, низ жица итд.
- Јава низ - Како исписати елементе низа у Јави?
- ПЛ СКЛ лекције за почетнике са примерима | Шта је ПЛ / СКЛ
- Јава Арраи - Декларишите, направите и иницијализујте низ у Јави
- Водич за дужину Јава низа са примерима кода
- СКЛ вс НоСКЛ Тачне разлике и знајте када треба користити НоСКЛ и СКЛ
- Разлика између СКЛ Вс МиСКЛ Вс СКЛ Сервер (са примерима)
- ЈУнит 5 угнежђена класа: @Нестед Туториал са примерима