Що таке тип запису?
Тип запису - це складний тип даних, який дозволяє програмісту створити новий тип даних із бажаною структурою стовпців.
- Він групує один або кілька стовпців, щоб сформувати новий тип даних
- Ці стовпці матимуть своє ім’я та тип даних
- Тип запису може приймати дані
- Як єдиний запис, що складається з багатьох стовпчиків АБО
- Він може приймати значення для одного конкретного стовпця запису
- Тип запису просто означає новий тип даних. Після створення типу запису він буде зберігатися як новий тип даних у базі даних і використовуватиметься для оголошення змінної в програмах.
- Він використовуватиме ключове слово '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_det' подібний до інших типів даних (наприклад, ЧИСЛО, 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: заповнення поля "ім'я_ім'я" в "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, YYY як ім'я_імена, 15000 як зарплата та 1000 як номер менеджера.
- Рядок коду 12: Фіксація вищевказаної транзакції вставки.
- Рядок коду 13: Заповнення змінної 'guru99_emp_rec' як даних рівня рядка із запиту вибору для номера працівника 1002.
- Рядок коду 15-19: Відображення значення 'guru99_emp_rec' у вихідних даних.
Вихід:
Employee DetailEmployee Number: 1002Employee Name: YYYEmployee Salary: 1000Employee Manager Number: 15000
Примітка: До типу запису можна отримати доступ лише на рівні стовпця, перенаправляючи його значення в будь-який вихідний режим.