Что такое тип записи?
Тип записи - это сложный тип данных, который позволяет программисту создавать новый тип данных с желаемой структурой столбцов.
- Он группирует один или несколько столбцов для формирования нового типа данных.
- У этих столбцов будет собственное имя и тип данных.
- Тип записи может принимать данные
- Как единая запись, состоящая из множества столбцов ИЛИ
- Он может принимать значение для одного конкретного столбца записи
- Тип записи просто означает новый тип данных. Как только тип записи будет создан, он будет сохранен как новый тип данных в базе данных, и он будет использоваться для объявления переменной в программах.
- Он будет использовать ключевое слово TYPE, чтобы указать компилятору, что он создает новый тип данных.
- Он может быть создан на « уровне базы данных», который может храниться как объекты базы данных, использоваться во всей базе данных, или он может быть создан на « уровне подпрограмм» , который виден только внутри подпрограмм.
- Тип записи уровня базы данных также может быть объявлен для столбцов таблицы, чтобы один столбец мог содержать сложные данные.
- Доступ к данным в этом типе данных можно получить, сославшись на их имя_переменной, за которым следует оператор точки (.), За которым следует имя_столбца, то есть '<имя_типа_записи>. <Имя_столбца>'
Синтаксис для объявления на уровне базы данных:
CREATE TYPEIS RECORD( ,);
В первом синтаксисе мы видим ключевое слово «CREATE TYPE», которое инструктирует компилятор создать тип записи с именем «type_name_db» с указанным столбцом в качестве объекта базы данных.
Это дается как отдельный оператор, а не внутри какого-либо блока.
Синтаксис для объявления на уровне подпрограммы:
DECLARETYPEIS RECORD( ,);BEGIN ;END;
В синтаксисе мы создаем тип записи с именем «type_name» только внутри подпрограммы.
В обоих методах объявления способ определения столбца и типа данных аналогичен.
Пример 1: Тип ЗАПИСИ как объект базы данных
В этой программе мы увидим, как создать «Тип записи» как объект базы данных. Мы собираемся создать запись типа emp_det с четырьмя столбцами. Столбцы и их тип данных следующие:
- EMP_NO (НОМЕР)
- 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, manager и salary, как определено.
- Теперь 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, salary и manager с типом данных NUMBER, VARCHAR2, NUMBER, NUMBER.
- Строка кода 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, salary и manager с типом данных NUMBER, VARCHAR2, NUMBER, NUMBER.
- Строка кода 9: переменная guru99_emp_rec объявлена как тип данных emp_det. Теперь эта переменная может содержать значение, которое содержит все указанные выше 4 поля / столбца.
- Строка кода 11: заполнение таблицы emp данными 1002 как emp_no, YYY как 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
Примечание. Доступ к типу записи возможен только на уровне столбца при перенаправлении его значения в любой режим вывода.