Шта је врста записа?
Тип записа је сложени тип података који програмеру омогућава да креира нови тип података са жељеном структуром колоне.
- Групира једну или више колона да би се формирао нови тип података
- Ове колоне ће имати своје име и тип података
- Тип записа може прихватити податке
- Као један запис који се састоји од много колона ИЛИ
- Може да прихвати вредност за једну одређену колону записа
- Тип записа једноставно значи нови тип података. Једном када се креира тип записа, он ће бити сачуван као нови тип података у бази података и исти ће се користити за декларисање променљиве у програмима.
- Користиће кључну реч „ТИП“ да би компајлеру наложио да креира нови тип података.
- Може се креирати на „ нивоу базе података“ који се може чувати као објекти базе података, користити у целој бази података или се може креирати на „ нивоима потпрограма“ , што је видљиво само унутар потпрограма.
- Тип записа на нивоу базе података такође се може декларисати за ступце табеле тако да појединачна колона може да садржи сложене податке.
- Подацима из овог типа података може се приступити позивањем на њихово име_променљиве, а иза њега следи оператор периода (.), А затим следи назив_ступаца, тј. '<запис_типа_варијабилно_име>. <име_колоне>'
Синтакса за декларацију на нивоу базе података:
CREATE TYPEIS RECORD( ,);
У првој синтакси можемо видети кључну реч 'ЦРЕАТЕ ТИПЕ', што налаже компајлеру да креира тип записа под називом "типе_наме_дб" са назначеном колоном као објектом базе података.
Ово је дато као појединачна изјава, а не унутар било ког блока.
Синтакса за декларацију на нивоу потпрограма:
DECLARETYPEIS RECORD( ,);BEGIN ;END;
У синтакси креирамо тип записа са именом „типе_наме“ само унутар потпрограма.
У оба метода декларације, начин дефинисања колоне и типа података је сличан.
Пример 1: РЕЦОРД врста као објект базе података
У овом програму видећемо како да креирамо „Тип записа“ као објекат базе података. Створићемо тип записа 'емп_дет' са четири колоне. Колоне и њихов тип података су следећи:
- ЕМП_НО (НУМБЕР)
- ЕМП_НАМЕ (ВАРЦХАР2 (150))
- УПРАВНИК (БРОЈ)
- ПЛАЋА (БРОЈ)
CREATE TYPE emp_det IS OBJECT(EMP_NO NUMBER,EMP_NAME VARCHAR2(150),MANAGER NUMBER,SALARY NUMBER);/Излаз:
Type created
Објашњење кода:
- Горњи код ће створити тип емп_дет као објект базе података.
- Имаће 4 колоне емп_но, емп_наме, менаџера и плату како је дефинисано.
- Сада је 'емп_дет' сличан другом типу података (попут НУМБЕР, ВАРЦХАР @, итд.) И видљив је у целој бази података. Стога се ово може користити у целој бази података за декларисање променљиве овог типа.
Излаз:
Створио је тип 'емп_дет' као тип записа на нивоу базе података.
Пример 2: Тип записа на нивоу потпрограма - приступ нивоу колоне
У овом примеру ћемо видети како да креирамо тип записа на нивоу потпрограма и како да попунимо и преузмемо вредности из њега по нивоу колоне.
Направићемо врсту записа 'емп_дет' на нивоу потпрограма и користићемо исту за попуњавање и приказивање података из ње.
DECLARETYPE emp_det IS RECORD(EMP_NO NUMBER,EMP_NAME VARCHAR2(150),MANAGER NUMBER,SALARY NUMBER);guru99_emp_rec emp_det;BEGINguru99_emp_rec.emp_no:= 1001;guru99_emp_rec.emp_name:=:'XXX';guru99_emp_rec.manager:= 1000;guru99_emp_rec.salary:=10000;dbms_output.put.line('Employee Detail');dbms_output.put_line ('Employee Number: '||guru99_emp_rec.emp_no);dbms_output.put_line ('Employee Name: '||guru99_emp_rec.emp_name);dbms_output.put_line ('Employee Salary: ' ||guru99_emp_rec.salary);dbms_output.put_line ('Employee Manager Number: '||guru99_emp_rec.manager);END;/
Излаз:
Employee DetailEmployee Number: 1001Employee Name: XXXEmployee Salary: 10000Employee Manager Number: 1000
Објашњење кода:
- Кодни ред 2-8 : Тип записа 'емп_дет' се декларише са колонама емп_но, емп_наме, плата и менаџер типа података БРОЈ, ВАРЦХАР2, БРОЈ, БРОЈ.
- Линија 9: променљива гуру99_емп_рец декларисана је као тип података 'емп_дет'. Сада ова променљива може да садржи вредност која садржи сва горе наведена 4 поља / колоне.
- Линија кода 11: Попуњавање поља 'емп_но' поља 'гуру99_емп_рец' са вредношћу 1001.
- Редак кода 12: Попуњавање поља 'емп_наме' поља 'гуру99_емп_рец' са вредношћу КСКСКС.
- Редак кода 13: Попуњавање поља „менаџер“ „гуру99_емп_рец“ са вредношћу 1000.
- Редак 14: Попуњавање поља „плата“ поља „гуру99_емп_рец“ са вредношћу 10000.
- Редак кода 15-19: Приказивање вредности 'гуру99_емп_рец' у излазу.
Пример 3: Тип записа на нивоу потпрограма - приступ нивоу
У овом примеру видећемо како да креирамо тип записа на нивоу потпрограма и како да га попунимо као ниво реда. Направићемо врсту записа 'емп_дет' на нивоу потпрограма и користићемо исту за попуњавање и приказивање података из ње.
DECLARETYPE emp_det IS RECORD(EMP_NO NUMBER,EMP_NAME YARCHAR2( 150),MANAGER NUMBER,SALARY NUMBER);guru99_emp_rec emp_det;BEGININSERT INTO emp (emp_no, emp_name, salary, manager) VALUES (1002,'YYY',15000,1000);COMMIT;SELECT emp_no, emp_name, salary, manager INTO guru99_emp_rec FROM emp WHERE emp_no=1002;dbms_output.put_line (‘Employee Detail’);dbms_output.put_line (‘Employee Number: '||guru99_emp_rec.emp_no);dbms_output.put_line (‘Employee Name: '||guru99_emp_rec.emp_name);dbms_output.put_line (‘Employee Salary: '||guru99_emp_rec. salary);dbms_output.put_line (‘Employee Manager Number: '||guru99_emp_rec.manager);END;/
Објашњење кода:
- Кодни ред 2-8 : Тип записа 'емп_дет' се декларише са колонама емп_но, емп_наме, плата и менаџер типа података БРОЈ, ВАРЦХАР2, БРОЈ, БРОЈ.
- Линија 9: променљива гуру99_емп_рец декларисана је као тип података 'емп_дет'. Сада ова променљива може да садржи вредност која садржи сва горе наведена 4 поља / колоне.
- Линија кода 11: Попуњавање табеле емп подацима 1002 као емп_но, ИИИ као емп_наме, 15000 као плата и 1000 као број менаџера.
- Редак кода 12: Обављање горе наведене трансакције уметања.
- Редак кода 13: Попуњавање променљиве „гуру99_емп_рец“ као података на нивоу реда из упита за одабир за запослени број 1002.
- Редак кода 15-19: Приказивање вредности 'гуру99_емп_рец' у излазу.
Излаз:
Employee DetailEmployee Number: 1002Employee Name: YYYEmployee Salary: 1000Employee Manager Number: 15000
Напомена: Типу записа се може приступити само на нивоу колоне док се његова вредност преусмерава у било који излазни режим.