Что такое тип записи?
Тип записи — это сложный тип данных, который позволяет программисту создавать новый тип данных с желаемой структурой столбцов.
- Группирует один или несколько столбцов для формирования нового типа данных.
- Эти столбцы будут иметь свое имя и тип данных
- Тип записи может принимать данные
- Как одна запись, состоящая из множества столбцов ИЛИ
- Может принимать значение для одного конкретного столбца записи
- Тип записи просто означает новый тип данных. Как только тип записи создан, он будет сохранен как новый тип данных в базе данных, и тот же самый будет использоваться для объявления переменной в программах.
- Он будет использовать ключевое слово «TYPE», чтобы указать компилятору, что он создает новый тип данных.
- Он может быть создан на « уровне базы данных», который может быть сохранен как объекты базы данных, использоваться по всей базе данных, или он может быть создан на « уровнях подпрограммы» , который виден только внутри подпрограмм.
- Тип записи уровня базы данных также может быть объявлен для столбцов таблицы, чтобы один столбец мог содержать сложные данные.
- Доступ к данным в этом типе данных можно получить, указав их переменное_имя, за которым следует оператор точки (.), А затем столбец_имя, то есть «<record_type_variable_name>. <Column_name>»
Синтаксис для объявления на уровне базы данных:
CREATE TYPE <type_name_db> IS RECORD ( <column 1> <datatype>, );
В первом синтаксисе мы видим ключевое слово «CREATE TYPE», которое инструктирует компилятору создать тип записи с именем «type_name_db» с указанным столбцом в качестве объекта базы данных.
Это дается как отдельное утверждение, а не внутри какого-либо блока.
Синтаксис для объявления на уровне подпрограммы:
DECLARE TYPE <type_name> IS RECORD ( <columnl> <datatype>, ); BEGIN <execution_section>; 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, manager и salary, как определено.
- Теперь emp_det похож на другой тип данных (например, NUMBER, VARCHAR @ и т. Д.) И виден во всей базе данных. Следовательно, это можно использовать во всей базе данных для объявления переменной этого типа.
Вывод:
Создан тип emp_det в качестве типа записи на уровне базы данных.
Пример 2: Тип записи на уровне подпрограммы — доступ на уровне столбца
В этом примере мы увидим, как создать тип записи на уровне подпрограммы и как заполнить и извлечь значения из нее на уровне столбца.
Мы собираемся создать тип записи emp_det на уровне подпрограммы, и мы будем использовать то же самое для заполнения и отображения данных из него.
DECLARE TYPE emp_det IS RECORD ( EMP_NO NUMBER, EMP_NAME VARCHAR2(150), MANAGER NUMBER, SALARY NUMBER ); guru99_emp_rec emp_det; BEGIN guru99_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 Detail Employee Number: 1001 Employee Name: XXX Employee Salary: 10000 Employee Manager Number: 1000
Объяснение кода:
- Строка кода 2-8 : тип записи ’emp_det’ объявлен со столбцами emp_no, emp_name, окладом и менеджером типа данных 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: заполнение поля ‘manager’ в ‘guru99_emp_rec’ значением 1000.
- Строка кода 14: заполнение поля ‘salary’ в ‘guru99_emp_rec’ значением 10000.
- Строка кода 15-19: отображение значения «guru99_emp_rec» в выходных данных.
Пример 3: Тип записи на уровне подпрограммы — доступ на уровне строк
В этом примере мы увидим, как создать тип записи на уровне подпрограммы и как заполнить его как уровень строки. Мы собираемся создать тип записи emp_det на уровне подпрограммы, и мы будем использовать то же самое для заполнения и отображения данных из него.
DECLARE TYPE emp_det IS RECORD ( EMP_NO NUMBER, EMP_NAME YARCHAR2( 150), MANAGER NUMBER, SALARY NUMBER ); guru99_emp_rec emp_det; BEGIN INSERT 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, окладом и менеджером типа данных 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 Detail Employee Number: 1002 Employee Name: YYY Employee Salary: 1000 Employee Manager Number: 15000
Примечание. Доступ к типу записи возможен только на уровне столбца при перенаправлении его значения в любой режим вывода.