Тип записів Oracle PL / SQL із прикладами

Зміст:

Anonim

Що таке тип запису?

Тип запису - це складний тип даних, який дозволяє програмісту створити новий тип даних із бажаною структурою стовпців.

  • Він групує один або кілька стовпців, щоб сформувати новий тип даних
  • Ці стовпці матимуть своє ім’я та тип даних
  • Тип запису може приймати дані
    • Як єдиний запис, що складається з багатьох стовпчиків АБО
    • Він може приймати значення для одного конкретного стовпця запису
  • Тип запису просто означає новий тип даних. Після створення типу запису він буде зберігатися як новий тип даних у базі даних і використовуватиметься для оголошення змінної в програмах.
  • Він використовуватиме ключове слово 'TYPE', щоб вказувати компілятору, що він створює новий тип даних.
  • Його можна створити на " рівні бази даних", який можна зберігати як об'єкти бази даних, використовувати всю базу даних або створити на рівні " підпрограми" , що видно лише всередині підпрограм.
  • Тип запису на рівні бази даних також може бути оголошений для стовпців таблиці, щоб один стовпець містив складні дані.
  • До даних у цьому типі даних можна отримати доступ, посилаючись на їх ім'я_змінної, за яким слід оператор періоду (.), А потім за ім'ям_столбця, тобто '<ім'я_запису_запису_запису>. <Ім'я_столбця>'

Синтаксис для оголошення на рівні бази даних:

CREATE TYPE  IS RECORD( ,);

У першому синтаксисі ми можемо побачити ключове слово 'CREATE TYPE', що вказує компілятору створити тип запису з іменем "type_name_db" із зазначеним стовпцем як об'єкт бази даних.

Це подається як окреме твердження, а не всередині будь-якого блоку.

Синтаксис для оголошення на рівні підпрограми:

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

Примітка: До типу запису можна отримати доступ лише на рівні стовпця, перенаправляючи його значення в будь-який вихідний режим.