У овом упутству ћемо научити како користити СКЛ у ПЛ / СКЛ-у. СКЛ је стварна компонента која се брине за преузимање и ажурирање података у бази података, док је ПЛ / СКЛ компонента која обрађује те податке. Даље, у овом чланку ћемо такође разговарати о томе како комбиновати СКЛ у блоку ПЛ / СКЛ.
У овом упутству ћете научити-
- Уметање података
- Ажурирање података
- Брисање података
- Избор података
ДМЛ трансакције у ПЛ / СКЛ
ДМЛ је скраћеница од Дата Манипулатион Лангуаге . Ове изјаве се углавном користе за обављање манипулативне активности. Бави се следећим операцијама.
- Уметање података
- Ажурирање података
- Брисање података
- Избор података
У ПЛ / СКЛ, манипулацијом подацима можемо да се бавимо само помоћу СКЛ наредби.
Уметање података
У ПЛ / СКЛ можемо податке уметнути у било коју табелу помоћу СКЛ наредбе ИНСЕРТ ИНТО. Ова наредба ће узети име табеле, вредност колоне и вредности колоне као улаз и убацити вредност у основну табелу.
Команда ИНСЕРТ такође може узимати вредности директно из друге табеле помоћу израза 'СЕЛЕЦТ', уместо да даје вредности за сваку колону. Кроз наредбу „СЕЛЕЦТ“ можемо уметнути онолико редова колико садржи основна табела.
Синтакса:
BEGININSERT INTO( , ,… )VALUES( ,… : );END;
- Горња синтакса приказује наредбу ИНСЕРТ ИНТО. Име и вредности табеле су обавезна поља, док имена колона нису обавезна ако уводи за уметање имају вредности за све колоне табеле.
- Кључна реч „ВРЕДНОСТИ“ је обавезна ако су вредности дате одвојено, као што је приказано горе.
Синтакса:
BEGININSERT INTO( , ,… , )SELECT , ,… FROM ;END;
- Горња синтакса приказује наредбу ИНСЕРТ ИНТО која узима вредности директно из <име_табеле2> помоћу наредбе СЕЛЕЦТ.
- Кључна реч „ВРЕДНОСТИ“ у овом случају не би требало да буде присутна јер вредности нису дате одвојено.
Ажурирање података
Ажурирање података једноставно значи ажурирање вредности било ког ступца у табели. То се може урадити помоћу наредбе 'УПДАТЕ'. Ова изјава узима име табеле, име колоне и вредност као улаз и ажурира податке.
Синтакса:
BEGIN UPDATESET = , = , = WHERE ;END;
- Горња синтакса приказује УПДАТЕ. Кључна реч 'СЕТ' налаже том ПЛ / СКЛ механизму да ажурира вредност колоне датом вредношћу.
- Клаузула „ВХЕРЕ“ није обавезна. Ако ова клаузула није дата, тада ће се вредност поменуте колоне у целој табели ажурирати.
Брисање података
Брисање података значи брисање једног пуног записа из табеле базе података. У ту сврху се користи наредба 'ДЕЛЕТЕ'.
Синтакса:
BEGINDELETEFROMWHERE ;END;
- Горња синтакса приказује наредбу ДЕЛЕТЕ. Кључна реч 'ФРОМ' није обавезна и са или без клаузуле 'ФРОМ' наредба се понаша на исти начин.
- Клаузула „ВХЕРЕ“ није обавезна. Ако ова клаузула није дата, тада ће се избрисати цела табела.
Избор података
Пројекција / дохватање података значи преузимање потребних података из табеле базе података. То се може постићи употребом наредбе 'СЕЛЕЦТ' са клаузулом 'ИНТО'. Команда 'СЕЛЕЦТ' ће дохватити вриједности из базе података, а клаузула 'ИНТО' ће те вриједности додијелити локалној варијабли ПЛ / СКЛ блока.
Испод су тачке које треба узети у обзир у изјави 'СЕЛЕЦТ'.
- Израз 'СЕЛЕЦТ' треба да врати само један запис док се користи клаузула 'ИНТО' јер једна променљива може да садржи само једну вредност. Ако израз „СЕЛЕЦТ“ врати више од једне вредности, подићи ће се изузетак „ТОО_МАНИ_РОВС“.
- Израз 'СЕЛЕЦТ' ће доделити вредност променљивој у клаузули 'ИНТО', тако да за попуњавање вредности треба да добије најмање један запис из табеле. Ако није добио ниједан запис, тада се подиже изузетак „НО_ДАТА_ФОУНД“.
- Број колона и њихов тип података у клаузули „СЕЛЕЦТ“ треба да се подударају са бројем променљивих и њиховим типовима података у клаузули „ИНТО“.
- Вредности се преузимају и попуњавају истим редоследом како је поменуто у изјави.
- Клаузула „ВХЕРЕ“ није обавезна која омогућава веће ограничење записа који ће бити дохваћени.
- Израз 'СЕЛЕЦТ' може се користити у услову 'ВХЕРЕ' осталих ДМЛ израза за дефинисање вредности услова.
- Израз 'СЕЛЕЦТ' када се користе изрази 'ИНСЕРТ', 'УПДАТЕ', 'ДЕЛЕТЕ' не би требало да има клаузулу 'ИНТО', јер у тим случајевима неће попунити ниједну променљиву.
Синтакса:
BEGINSELECT,… INTO ,… FROM WHERE ;END;
- Горња синтакса приказује наредбу СЕЛЕЦТ-ИНТО. Кључна реч 'ФРОМ' је обавезна која идентификује име табеле из које треба преузети податке.
- Клаузула „ВХЕРЕ“ није обавезна. Ако ова клаузула није дата, тада ће се преузети подаци из целе табеле.
Пример 1 : У овом примеру ћемо видети како изводити ДМЛ операције у ПЛ / СКЛ. Убацићемо следећа четири записа у емп табелу.
ЕМП_НАМЕ | ЕМП_НО | ПЛАТА | МЕНАЏЕР |
БББ | 1000 | 25000 | ААА |
КСКСКС | 1001 | 10000 | БББ |
ИИИ | 1002 | 10000 | БББ |
ЗЗЗ | 1003 | 7500 | БББ |
Затим ћемо ажурирати плату са „КСКСКС“ на 15000 и избрисати евиденцију запослених „ЗЗЗ“. На крају ћемо пројектовати детаље запосленог „КСКСКС“.
DECLAREl_emp_name VARCHAR2(250);l_emp_no NUMBER;l_salary NUMBER;l_manager VARCHAR2(250);BEGIN INSERT INTO emp(emp_name,emp_no,salary,manager)VALUES(‘BBB’,1000,25000,’AAA’);INSERT INTO emp(emp_name,emp_no,salary,manager)VALUES('XXX',1001,10000,’BBB);INSERT INTO emp(emp_name,emp_no,salary,managedVALUES(‘YYY',1002,10000,'BBB');INSERT INTO emp(emp_name,emp_no,salary,manager)VALUES(‘ZZZ',1003,7500,'BBB'):COMMIT;Dbms_output.put_line(‘Values Inserted');UPDATE EMPSET salary=15000WHERE emp_name='XXX';COMMIT;Dbms_output.put_line(‘Values Updated');DELETE emp WHERE emp_name='ZZZ';COMMIT:Dbms_output.put_line('Values Deleted );SELECT emp_name,emp_no,salary,manager INTO l_emp_name,l_emp_no,l_salary,l_manager FROM emp WHERE emp_name='XXX';Dbms output.put line(‘Employee Detail’);Dbms_output.put_line(‘Employee Name:‘||l_emp_name);Dbms_output.put_line(‘Employee Number:‘||l_emp_no);Dbms_output.put_line(‘Employee Salary:‘||l_salary);Dbms output.put line(‘Emplovee Manager Name:‘||l_manager):END;/
Излаз:
Values InsertedValues UpdatedValues DeletedEmployee DetailEmployee Name:XXXEmployee Number:1001Employee Salary:15000Employee Manager Name:BBB
Објашњење кода:
- Линија кода 2-5 : Декларисање променљиве.
- Редак 7-14 : Уметање записа у емп табелу.
- Редак кода 15 : Предаја уметања трансакција.
- Шифра 17-19 : Ажурирање зараде запосленог „КСКСКС“ на 15000
- Редак кода 20 : Уређивање трансакције ажурирања.
- Линија 22 : Брисање записа „ЗЗЗ“
- Редак кода 23 : Предаја трансакције брисања.
- Линија кода 25-27 : Одабир записа „КСКСКС“ и попуњавање у променљиву л_емп_наме, л_емп_но, л_салари, л_манагер.
- Линија кода 28-32 : Приказ вредности преузетих записа.