pl sql cursor strings
У овом упутству научићемо шта је ПЛ СКЛ показивач и сродни концепти као што су имплицитни и експлицитни курсори, курсор за петљу итд. Такође ћемо научити о функцијама низа у ПЛ / СКЛ:
У ПЛ СКЛ колекције туториал оф ПЛ / СКЛ серија , научили смо о методама сакупљања, Варраиу, угнежђеној табели и Асоцијативном низу уз помоћ примера кода.
У овом чланку ћемо истражити разне типове курсора које има ПЛ / СКЛ. Такође ћемо видети примену различитих типова курсора са примерима кода.
Такође, разговараћемо о стринговима и неким уграђеним функцијама стрингова доступним у ПЛ / СКЛ.
најбоља бесплатна апликација за преузимање музике за андроид
Шта ћете научити:
ПЛ СКЛ курсор
Орацле је посветио меморијске локације за извршавање СКЛ израза и тада држи те обрађене информације, на пример , укупан број редова ажуриран.
Курсор у ПЛ / СКЛ даје име и делује као показивач на област рада која се назива контекстуална област, а затим користи њене информације. Задржава број редова које обрађује СКЛ израз. Ови редови се позивају као активни скуп. Величина активног скупа једнака је броју редова који испуњавају услов.
Постоје две врсте курсора које су наведене у наставку:
- Имплицитни курсор
- Експлицитни курсор
Имплицитни показивачи
Орацле подразумевано додељује имплицитне курсоре током извршавања СКЛ израза. Садржи погођене редове ДМЛ операцијама попут УПДАТЕ, ДЕЛЕТЕ и ИНСЕРТ. Стога се имплицитни курсори користе када немамо експлицитни курсор.
Док убацујемо ред, курсор чува те одређене податке. Слично томе, за операције брисања и ажурирања курсори чувају погођене редове. Имплицитни показивачи не добијају никаква имена, па их програмери не могу манипулисати, а подаци садржани на њему не могу се нигде користити.
Најновији ажурирани показивачи могу се користити уз помоћ атрибута курсора. Ови атрибути су својства која помажу у упућивању на тип података и структуру ставки без понављања њихових дефиниција. Све колоне и табеле у бази података имају заједничке карактеристике атрибута (представљене знаком%) и могу се користити као скл% атрибут_име.
Сл Но. | Име | Сврха |
---|---|---|
7 | ДУЖИНА (м) | Приказује број знакова у низу м. |
један | %НАШАО | Даје резултат у логичкој вредности. Приказује тачно ако изрази ДЕЛЕТЕ, ИНСЕРТ, УПДАТЕ или СЕЛЕЦТ утичу на један или више редова. Иначе се враћа фалсе. |
два | %НИЈЕ ПРОНАЂЕН | Даје резултат у логичкој вредности и има обрнуту функционалност% ФОУНД. Приказује тачно ако изрази ДЕЛЕТЕ, ИНСЕРТ, УПДАТЕ или СЕЛЕЦТ не утичу на редове. Иначе се враћа фалсе. |
3 | %ЈЕ ОТВОРЕН | Даје резултат у логичкој вредности. Враћа тачно ако је курсор тренутно отворен. Иначе се враћа фалсе. |
4 | % РОВЦОУНТ | Даје број броја редова преузетих из наредби ДЕЛЕТЕ, ИНСЕРТ, УПДАТЕ или СЕЛЕЦТ. |
5 | %ТИП | Даје тип података колоне или променљиве базе података. |
6 | % РОВТИПЕ | Даје тип записа који је еквивалентан реду базе података. |
Размотримо таблицу која се зове ТУТОР.
SELECT * FROM TUTOR;
Направили смо табелу са СКЛ изразом датим у наставку:
CREATE TABLE TUTOR( CODE INT NOT NULL, SUBJECT VARCHAR(15) NOT NULL, TEACHER VARCHAR(15), REVIEWS VARCHAR (10) NOT NULL, PRIMARY KEY (CODE) );
У ову табелу су уметнуте вредности са СКЛ изразима датим у наставку:
INSERT INTO TUTOR (CODE,SUBJECT,TEACHER,REVIEWS) VALUES (1, 'Automation', 'Mukul', 'five stars'); INSERT INTO TUTOR (CODE,SUBJECT,TEACHER,REVIEWS) VALUES (4, 'PLSQL', 'Anand', 'four stars'); INSERT INTO TUTOR (CODE,SUBJECT,TEACHER,REVIEWS) VALUES (2, 'Performance', 'Arvind', 'four stars');
Имплементација кода са имплицитним курсором:
DECLARE total_count number(30); BEGIN --updating a row UPDATE TUTOR SET TEACHER = 'Zen' where CODE = 1; -- result in boolean, true returned if no rows affected IF sql%notfound THEN dbms_output.put_line('no subjects fetched'); -- result in boolean, true returned if any rows affected ELSIF sql%found THEN -- count the number of rows affected rows affected total_count := sql%rowcount; dbms_output.put_line( total_count || ' teacher name updated '); END IF; END; /
Резултат горњег кода треба да буде:
Проверимо сада промене одражене у табели под називом ТУТОР.
Користимо СКЛ израз да бисмо добили ступце табеле:
SELECT * FROM TUTOR;
Тако видимо да се, како показује курсор, име наставника са кодом = 1 ажурира на Зен.
Експлицитни показивачи
Програмери могу имати сопствено корисничко дефинисано подручје контекста за покретање ДМЛ операција. Тако могу над њим да изврше више моћи. Одељак декларације ПЛ / СКЛ блока кода садржи експлицитне курсоре. Обично се гради на СЕЛЕЦТ операцијама које преузимају више редова.
Синтакса експлицитног курсора:
DECLARE CURSOR <> IS <> <> BEGIN OPEN <>; FETCH <> INTO ; . . CLOSE ; END;
Експлицитни курсор ради на доле наведеним процесима:
# 1) Декларација курсора за иницијализацију меморије. Овде се креира именована контекстуална област која служи као име курсора.
Синтакса:
CURSOR tutorial_s IS SELECT code FROM TUTORIAL;
#два) Отвор курсора за алокацију меморије . Курсор је сада доступан за преузимање ажурираних редова из базе података.
Синтакса:
OPEN tutorial_s;
# 3) Преузима се курсор за добијање података. Након завршетка операције СЕЛЕЦТ, добијени редови се стављају у додељену меморију и они се сада сматрају активним скуповима. Курсор може приступити по једном реду.
Синтакса:
FETCH tutorial_s INTO c_code;
# 4) Курсор је коначно затворен да ослободи додељену меморију. Како се сви записи добијају један по један, курсор се затвара да би се ослободила меморија контекстног подручја.
Синтакса:
CLOSE tutorial_s;
Имплементација кода са експлицитним курсором:
DECLARE -- cursor declaration CURSOR t_tutorials is SELECT code, subject, teacher FROM Tutor; t_code Tutor.code%type; t_subject Tutor.subject%type; t_teacher Tutor.teacher%type; BEGIN -- opening a cursor OPEN t_tutorials; LOOP -- fetching values from cursor FETCH t_tutorials into t_code, t_subject, t_teacher; EXIT WHEN t_tutorials%notfound; -- printing in console dbms_output.put_line('Code is: ' || t_code || ' ' || 'Subject is: ' || t_subject || ' Teacher is: ' || t_teacher); END LOOP; CLOSE t_tutorials; END; /
Резултат горњег кода треба да буде:
Курсор за петљу
Док радимо са експлицитним курсорима, можемо користити ФОР петљу уместо да користимо изјаве попут ФЕТЦХ, ОПЕН и ЦЛОСЕ. Курсор ФОР Лооп има индекс петље као запис који показује на ред добијен из базе података. Следеће након отварања курсора, узастопно преузима више редова података из скупа резултата у поља записа.
Коначно, курсор се затвара након што се добију сви редови. Знак тачка (.) Користимо за означавање сваког поља у запису. (.) Тачка се заправо користи за одабир компоненте.
Синтакса за петљу курсора Фор:
DECLARE CURSOR c IS SELECT code, subject, price FROM Tutorial; ... BEGIN FOR Tutorial_rec IN c LOOP ... price_sum:= price_sum + Tutorial_rec.price; END LOOP;
Овде, курсор ФОР петља изјављује „ Туториал_рец ’ као запис.
Курсор променљивих
Променљива курсора користи се за упућивање на тренутни ред у скупу резултата који има више од једног реда. Може се користити за било коју врсту упита. Слично је променљивој ПЛ / СКЛ, где можемо доделити вредности и можемо је проследити путем потпрограма у бази података. Тако променљиве курсора пружају велику флексибилност и подаци се могу добити у централизованом процесу.
ПЛ СКЛ низови
Низови у ПЛ / СКЛ-у су група знакова у одређеном редоследу. Величина низа може бити доступна или не. Знакови који могу бити део низа могу бити посебни знакови, празнине, бројеви и алфанумерички. Дакле, то је скуп изабраних симбола из групе знакова.
У ПЛ / СКЛ постоје три категорије низова. Они су наведени у наставку:
- Низ променљиве дужине: Дужина низа не може премашити 32.767 и не може бити допуна низа.
- Низ фиксне дужине : Дужина низа је наведена у декларацији низа. Низ је десно подстављен размацима како би могао да прими наведену дужину низа.
- Велики објекти са знаковима (ЦЛОБ): Ово је низ променљиве дужине величине до 128 ТБ.
Низови у ПЛ / СКЛ могу бити литерални или променљиви. Наводи се користе за литерале.
Синтакса:
'This is Software Testing Help'
Такође, имамо могућност додавања цитата у наш стринг литерал. То се постиже задржавањем два узастопна појединачна цитата.
Синтакса:
'We can''t go there'
Кориснички дефинисане граничнике за стринг литерал можемо описати додавањем слова „к“.
Синтакса:
q'(We can't go there)'
Декларација променљивих променљивих
У ПЛ / СКЛ-у постоји више типова података попут НЦХАР, ЦХАР, ВАРЦХАР, ВАРЦХАР2, ЦЛОБ и НЦЛОБ. Типови података националног скупа знакова имају префикс Н. Користе се за чување Уницоде знакова.
У низу променљиве дужине треба навести максимално ограничење дужине низа.
Синтакса:
DECLARE subject varchar(10);
То значи да променљива тема може да садржи до 10 знакова и не више од тога. У случају када је изостављена максимална дужина, појављује се грешка компајлирања.
У низу фиксне дужине може се користити тип података ЦХАР. Није потребно дефинисати максималну дужину низа фиксне дужине. Ако је ограничење изостављено, Орацле узима подразумевану вредност 1.
Синтакса:
DECLARE subject char := 'P';
Ако декларишете променљиву ЦХАР дужине веће од 1, Орацле ће подразумевано подметнути вредност коју смо сачували тој променљивој са размацима. То се ради док се не достигне наведена максимална дужина.
Да би се направила декларација за карактерно велики објекат, користи се ЦЛОБ. Овде не мора бити наведена максимална дужина, а дужину поставља сама Орацле база података и зависи од величине блока базе података.
Синтакса:
DECLARE l CLOB;
Смернице за одабир типова података у ПЛ / СКЛ:
- Ако имамо посла са вредностима које увек имају фиксну дужину, на пример, број мобилног телефона који има константну дужину и формат, требали бисмо користити тип података ЦХАР или НЦХАР.
- Иначе, требали бисмо користити тип података ВАРЦХАР2 или НВАРЦХАР2.
- Ако имамо посла са низом који има више од 32.767 знакова, требало би да користимо тип података ЦЛОБ или НЦЛОБ.
Имплементација кода са стринговима:
DECLARE subject varchar2(30); teacher varchar2(40); syllabus clob; options char(1); BEGIN -- Initializing values to variables subject := 'Selenium'; teacher := 'Arun'; syllabus := 'Java, WebDriver Methods, Synchronization, WebTables.'; options := 'S'; -- checking condition and if true IF options = 'S' THEN -- printing in console dbms_output.put_line(subject); dbms_output.put_line(teacher); dbms_output.put_line(syllabus); END IF; END; /
Резултат горњег кода треба да буде:
ПЛ / СКЛ функције и оператери у низу
Сл Но. | Име | Сврха |
---|---|---|
један | ЦОНЦАТ (и, ј) | Додаје низове и и ј и враћа нови низ. |
два | АСЦИИ (н) | Враћа еквивалентну АСЦИИ вредност н. |
3 | ЦХР (н) | Враћа знак заједно са еквивалентном АСЦИИ вредношћу н. |
4 | ИНСТР (и, к, старт, н) | Проналази подниз и у к низу, а затим враћа позицију појављивања. Старт се односи на почетну позицију претраживања и необавезан је параметар. Н је н-та појава низа и такође је опциони параметар. |
5 | ИНСТРБ (и) | Враћа положај подниза у низу у бајтовима. |
6 | ИНИТЦАП (к) | Претвара почетни знак појединачних речи у низу к у велико слово, а затим враћа низ. |
8 | ДУЖИНА (н) | Приказује број знакова у низу м у бајтовима за једнобајтни скуп знакова. |
9 | ЛТРИМ (н, к) | Уклања к знакова са леве стране низа н. Кс је опциони параметар, ако није наведен, уклања све водеће размаке низа н. |
10 | РТРИМ (н, к) | Уклања к знакова с десне стране низа н. Кс је опциони параметар, ако није наведен, уклања све празне просторе низа н. |
Једанаест | ТРИМ ((трим_цхар ФРОМ) к); | Уклања размаке или поменуте знакове са почетка, краја или оба краја низа к. |
12 | ДОЊИ (и) | Претвара знакове низа и у мала слова, а затим враћа низ. |
13 | ГОРЊИ (и) | Претвара знакове низа и у велика слова, а затим враћа низ. |
14 | ЛПАД (и, л, к) | Подмеће низ к улево да би низ и био дугачак л. Параметар к није обавезан ако су изостављени размаци додати лево од низа и. |
петнаест | РПАД (и, л, к) | Подмеће низ к удесно да би низ и био дугачак л. Параметар к није обавезан ако су изостављени размаци додати десно од низа и. |
16 | НАНВЛ (н, вал) | Враћа вал ако је н једнако вредности НаН, у супротном се враћа н. |
17 | НЛССОРТ (и) | Модификује метод сортирања знакова. Требало би га споменути пре било које НЛС функције, иначе ће бити извршено подразумевано сортирање. |
18 | НЛС_ИНИТЦАП (и) | Функционално сличан функцији ИНИТЦАП, али може узети другу врсту технике као што је поменуто у функцији НЛССОРТ. |
19 | НЛС_ЛОВЕР (м) | Функционално сличан функцији ЛОВЕР, али може узети другу врсту технике као што је поменуто у функцији НЛССОРТ. |
двадесет | НЛС_УППЕР (м) | Функционално сличан функцији ГОРЊИ, али може узети другачију технику као што је поменуто ИН функција НЛССОРТ. |
двадесет један | НВЛ (н, вал) | Враћа вал ако је к једнако вредности НУЛЛ, у супротном се враћа н. |
22 | НВЛ2 (н, вал, вал2) | Враћа вал ако к није једнако НУЛЛ вредности, у супротном ако је к једнако НУЛЛ, враћа се вал2. |
2. 3 | СОУНДЕКС (и) | Приказује низ који има вокални приказ и. |
24 | СУБСТР (н, почетак, л) | Приказује подниз низа н који започиње са положаја наведеног у старту. Параметар л није обавезан и представља дужину подниза. |
25 | ПОДЛОГА (н) | Функционално слично функцији СУБСТР, али параметри су у бајтовима, а не у знаковима за један бајт систем знакова. |
26 | ЗАМЕНА (н, с, р) | Замењује појаве с с низом р са у низу н. |
Имплементација кода са неким функцијама низа:
DECLARE name varchar2(30) := ' software testing help!'; BEGIN dbms_output.put_line(UPPER(name)); dbms_output.put_line(LOWER(name)); dbms_output.put_line(LENGTH(name)); dbms_output.put_line(INITCAP(name)); /* get the first word in the string */ dbms_output.put_line ( SUBSTR (name, 1, 8)); /* get the location of the first 'w' */ dbms_output.put_line ( INSTR (name, 'w')); /* replace a string */ dbms_output.put_line ( REPLACE( name, 'help', 'solution')); /* trim a string from right */ dbms_output.put_line ( RTRIM(name,'!')); /* trim a string */ dbms_output.put_line ( TRIM(name)); END; /
Резултат горњег кода треба да буде:
најбољи бесплатни софтвер за оптимизацију за Виндовс 10
Објашњење горњег кода:
- Први излаз је ПОМОЋ ЗА ТЕСТИРАЊЕ СОФТВЕРА! Враћа улазни низ ‘Помоћ при тестирању софтвера!’ у великом слову уз помоћ УППЕР функција.
- Други излаз је помоћ за тестирање софтвера !. Враћа улазни низ ПОМОЋ ЗА ТЕСТИРАЊЕ СОФТВЕРА! малим словима уз помоћ функција ЛОВЕР.
- Трећи излаз 2. 3 . Враћа дужину улазног низа уз помоћ Функција ЛЕНГТХ.
- Четврти излаз је Помоћ за тестирање софтвера !. Враћа први знак сваке речи улазног низа у великим словима помоћу ИНИТЦАП функција .
- Пети излаз је софтвар. Враћа подниз улазног низа са првог положаја на дужину од 8 укључујући размак уз помоћ СУБСТР функција .
- Шести излаз је 6. Враћа положај у у улазном низу уз помоћ ИНСТР функција .
- Седми излаз је решење за тестирање софтвера !. Враћа нови низ заменом помоћ са решење у улазном низу уз помоћ ЗАМЕНИ функцију .
- Осми излаз је помоћ за тестирање софтвера. Враћа нови низ исецањем карактера ! са десне стране улазног низа уз помоћ РТРИМ функција .
- Девети излаз је помоћ за тестирање софтвера !. Враћа нови низ исецањем водећих и пратећих размака из улазног низа уз помоћ ТРИМ функција .
Често постављана питања и одговори
П # 1) Шта је курсор у ПЛ / СКЛ?
Одговор: Након извршавања СКЛ израза, Орацле база података гради меморију која се назива контекст подручје. Курсор има обрађене информације из наредбе селецт и садржи редове ажуриране том операцијом СЕЛЕЦТ.
П # 2) Шта је курсор и тип курсора?
Одговор: Након извршавања СКЛ израза, Орацле база података гради меморију која се назива контекстним подручјем и која је привремено радно подручје. Постоје две категорије курсора - имплицитни курсор и експлицитни курсор.
П # 3) Како да покренем курсор у Орацле-у?
Одговор: Да бисте покренули курсор у Орацле-у, синтакса је: ОТВОРЕНО<> . ЦУРСОРНАМЕ се односи на име курсора доступно у одељку декларације ПЛ / СКЛ блока кода.
П # 4) Можемо ли прогласити курсор изнутра за почетак?
Одговор: Да, можемо пријавити више од једног курсора у ПЛ / СКЛ блоку кода.
П # 5) Како ћете пронаћи дужину низа у ПЛ / СКЛ?
Одговор: Дужину низа у ПЛ / СКЛ можемо пронаћи помоћу функције ЛЕНГТХ (стр). Овде је стр низ за који желимо да добијемо дужину. Ова функција враћа нумеричку вредност.
П # 6) Шта је СУБСТР у Орацле-у?
Одговор: Функција СУБСТР даје одређени број знакова са одређеног положаја низа. Синтакса је СУБСТР (н, старт, л). Враћа подниз из низа н који започиње са положаја наведеног у старту. Параметар л није обавезан и представља дужину подниза.
Закључак
У овом упутству детаљно смо разговарали о неким основним концептима ПЛ / СКЛ-а.
Обрадили смо следеће теме наведене у наставку:
- ПЛ СКЛ курсор: имплицитни курсор и експлицитни курсор
- ПЛ / СКЛ низови.
- Функције и оператори у низу.
<< PREV Tutorial |. | СЛЕДЕЋА Лекција >>
Препоручено читање
- ПЛ СКЛ лекције за почетнике са примерима | Шта је ПЛ / СКЛ
- Водич за дужину Јава низа са примерима кода
- Водич за руковање изузецима за Ц # са примерима кода
- Јава 'тхис' кључна реч: Водич са примерима кода
- Водич за Питхон ДатеТиме са примерима
- Употреба курсора у МонгоДБ са примерима
- Водич за функције # методе и методе са примерима кода
- МиСКЛ Водич за креирање погледа са примерима кода