Орацле ПЛ / СКЛ Рецордс Типе са примерима

Преглед садржаја:

Anonim

Шта је врста записа?

Тип записа је сложени тип података који програмеру омогућава да креира нови тип података са жељеном структуром колоне.

  • Групира једну или више колона да би се формирао нови тип података
  • Ове колоне ће имати своје име и тип података
  • Тип записа може прихватити податке
    • Као један запис који се састоји од много колона ИЛИ
    • Може да прихвати вредност за једну одређену колону записа
  • Тип записа једноставно значи нови тип података. Једном када се креира тип записа, он ће бити сачуван као нови тип података у бази података и исти ће се користити за декларисање променљиве у програмима.
  • Користиће кључну реч „ТИП“ да би компајлеру наложио да креира нови тип података.
  • Може се креирати на „ нивоу базе података“ који се може чувати као објекти базе података, користити у целој бази података или се може креирати на „ нивоима потпрограма“ , што је видљиво само унутар потпрограма.
  • Тип записа на нивоу базе података такође се може декларисати за ступце табеле тако да појединачна колона може да садржи сложене податке.
  • Подацима из овог типа података може се приступити позивањем на њихово име_променљиве, а иза њега следи оператор периода (.), А затим следи назив_ступаца, тј. '<запис_типа_варијабилно_име>. <име_колоне>'

Синтакса за декларацију на нивоу базе података:

CREATE TYPE  IS RECORD( ,);

У првој синтакси можемо видети кључну реч 'ЦРЕАТЕ ТИПЕ', што налаже компајлеру да креира тип записа под називом "типе_наме_дб" са назначеном колоном као објектом базе података.

Ово је дато као појединачна изјава, а не унутар било ког блока.

Синтакса за декларацију на нивоу потпрограма:

DECLARETYPE  IS 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

Напомена: Типу записа се може приступити само на нивоу колоне док се његова вредност преусмерава у било који излазни режим.