Тип записи на 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_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

Забележка: Типът на записа може да бъде достъпен само на ниво колона, като същевременно се пренасочва стойността му към произволен изходен режим.