Какво е тип запис?
Типът запис е сложен тип данни, който позволява на програмиста да създаде нов тип данни с желаната структура на колона.
- Той групира една или повече колони, за да формира нов тип данни
- Тези колони ще имат собствено име и тип данни
- Тип запис може да приема данните
- Като единичен запис, който се състои от много колони ИЛИ
- Той може да приеме стойността за една конкретна колона на запис
- Типът запис просто означава нов тип данни. След като типът на записа бъде създаден, той ще се съхранява като нов тип данни в базата данни и същият ще се използва за деклариране на променлива в програмите.
- Той ще използва ключовата дума „TYPE“, за да инструктира компилатора, че създава новия тип данни.
- Той може да бъде създаден на „ ниво на базата данни“, който може да се съхранява като обекти на базата данни, да се използва изцяло в базата данни или може да се създаде на „ нива на подпрограмата“ , което се вижда само в подпрограмите.
- Типът запис на ниво база данни може също да бъде деклариран за колоните на таблицата, така че едната колона да съдържа сложните данни.
- Данните в този тип данни могат да бъдат достъпни чрез препратка към тяхното име на променлива, последвано от оператор на период (.), Последван от име_на колона, т.е. '
.
Синтаксис за деклариране на ниво база данни:
CREATE TYPEIS RECORD( ,);
В първия синтаксис можем да видим ключовата дума 'CREATE TYPE', която инструктира компилатора да създаде тип запис с име "type_name_db" с посочената колона като обект на базата данни.
Това е дадено като индивидуално изявление, а не във всеки блок.
Синтаксис за декларация на ниво подпрограма:
DECLARETYPEIS RECORD( ,);BEGIN ;END;
В синтаксиса ние създаваме тип запис с име "type_name" само вътре в подпрограмата.
И при двата метода на деклариране начинът за дефиниране на колоната и типа данни е сходен.
Пример 1: Тип ЗАПИС като обект на база данни
В тази програма ще видим как да създадем "Тип запис" като обект на база данни. Ще създадем тип запис 'emp_det' с четири колони. Колоните и техният тип данни са както следва:
- EMP_NO (NUMBER)
- EMP_NAME (VARCHAR2 (150))
- МЕНИДЖЪР (НОМЕР)
- ЗАПЛАТА (БРОЙ)
CREATE TYPE emp_det IS OBJECT(EMP_NO NUMBER,EMP_NAME VARCHAR2(150),MANAGER NUMBER,SALARY NUMBER);/Изход:
Type created
Обяснение на кода:
- Горният код ще създаде тип emp_det като обект на база данни.
- Той ще има 4 колони emp_no, emp_name, мениджър и заплата, както е дефинирано.
- Сега 'emp_det' е подобен на друг тип данни (като NUMBER, VARCHAR @ и т.н.) И е видим в цялата база данни. Следователно това може да се използва в цялата база данни, за да декларира променливата от този тип.
Изход:
Създаде типа 'emp_det' като тип запис на ниво база данни.
Пример 2: Тип запис на ниво подпрограма - Достъп на ниво колона
В този пример ще видим как да създадем тип запис на ниво подпрограма и как да попълним и извлечем стойностите от него на ниво колона.
Ще създадем тип 'emp_det' тип_запис на ниво подпрограма и ще използваме същото за попълване и показване на данни от него.
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 : Типът запис 'emp_det' се декларира с колони emp_no, emp_name, заплата и мениджър от тип данни НОМЕР, VARCHAR2, НОМЕР, НОМЕР.
- Кодов ред 9: променливата guru99_emp_rec се декларира като тип данни „emp_det“. Сега тази променлива може да съдържа стойността, която съдържа всички горни 4 полета / колони.
- Кодов ред 11: Попълва се полето 'emp_no' на 'guru99_emp_rec' със стойност 1001.
- Кодов ред 12: Попълва се полето „emp_name“ на „guru99_emp_rec“ със стойност XXX.
- Код ред 13: Попълва се полето „мениджър“ на „guru99_emp_rec“ със стойност 1000.
- Кодов ред 14: Попълва се полето „заплата“ на „guru99_emp_rec“ със стойност 10000.
- Кодов ред 15-19: Показване на стойността на 'guru99_emp_rec' в изхода.
Пример 3: Тип запис на ниво подпрограма - достъп на ниво ред
В този пример ще видим как да създадем тип запис на ниво подпрограма и как да го попълним като ниво на ред. Ще създадем тип 'emp_det' тип_запис на ниво подпрограма и ще използваме същото за попълване и показване на данни от него.
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 : Типът запис 'emp_det' се декларира с колони emp_no, emp_name, заплата и мениджър от тип данни НОМЕР, VARCHAR2, НОМЕР, НОМЕР.
- Кодов ред 9: променливата guru99_emp_rec се декларира като тип данни „emp_det“. Сега тази променлива може да съдържа стойността, която съдържа всички горни 4 полета / колони.
- Код ред 11: Попълване на таблицата emp с данни 1002 като emp_no, ГГГ като emp_name, 15000 като заплата и 1000 като номер на мениджър.
- Код ред 12: Фиксиране на горната вмъкната транзакция.
- Код ред 13: Попълване на променливата 'guru99_emp_rec' като данни на ниво ред от заявката за избор за номер на служител 1002.
- Кодов ред 15-19: Показване на стойността на 'guru99_emp_rec' в изхода.
Изход:
Employee DetailEmployee Number: 1002Employee Name: YYYEmployee Salary: 1000Employee Manager Number: 15000
Забележка: Типът на записа може да бъде достъпен само на ниво колона, като същевременно се пренасочва стойността му към произволен изходен режим.