Oracle
 sql >> база данни >  >> RDS >> Oracle

Как да създадете дефинирана от потребителя променлива за тип данни в Oracle Database

Досега видяхме как да създадем базирани на таблица и базирани на курсор променливи на типа данни на запис. Този, който остава, е типът данни за запис от потребителя, който ще разгледаме в днешния урок.

Както подсказва името, дефинираните от потребителя записи са променливите на записа, чиято структура е дефинирана от потребителя, което е за разлика от записите, базирани на таблица или курсор, чиито структури са извлечени от съответните им таблици или курсор. Това означава, че с дефинирани от потребителя записи можете да имате пълен контрол върху структурата на вашата променлива на запис.

Процесът на създаване на променлива за дефиниране от потребителя е разделен на две части. Преди да дефинираме записа, първо трябва да дефинираме ТИПА за променливата на записа. Този ТИП ще стане основата на променливата за определяне на потребителя запис и ще помогне за управлението на нейната структура. След като TYPE бъде деклариран успешно, тогава можем да го използваме за създаване на нашата променлива, дефинирана от потребителя.

Синтаксис на потребителски дефинирани записи в Oracle Database

По-долу е синтаксисът за създаване на ТИП за променлива тип данни, дефиниран от потребителя.

TYPE type_name IS RECORD (
field_name1 datatype 1,
field_name2 datatype 2,
...
field_nameN datatype N 
);

След като сме декларирали нашия TYPE, сме готови да създадем нашата променлива на запис. След това тази променлива ще придобие всички свойства на типа, използвайки който е създадена. И ето синтаксисът за създаване на променлива за тип данни за дефиниране на потребителя.

record_name TYPE_NAME;

Забелязахте ли, че за разлика от базираната на таблица или базираната на курсора променлива на запис, ние не трябва да използваме атрибут %ROWTYPE тук за деклариране на променливата на запис?

Можете да гледате видеоурока в моя канал в YouTube за подробно обяснение на горния синтаксис.

Пример:Как да създадете променлива за тип данни за дефиниран от потребителя запис.

Стъпка 1:Декларирайте тип за променливата на дефинирания от потребителя запис

SET SERVEROUTPUT ON;
DECLARE
  TYPE rv_dept IS RECORD(
    f_name  VARCHAR2(20),
    d_name  DEPARTMENTS.department_name%TYPE 
  );

Стъпка 2:Декларирайте променлива за запис, дефинирана от потребителя

След като създадете TYPE, сте готови да създадете своята променлива, дефинирана от потребителя.

var1 rv_dept;

Този по-горе PL/SQL оператор ще създаде променлива на запис с името VAR1.

Стъпка 3:Инициализирайте променливата на дефинирания от потребителя запис.

Дефинирана от потребителя променлива на запис може да бъде инициализирана по няколко начина. Например можете да инициализирате променливата на записа директно, като й присвоите стойност с помощта на променлива за присвояване или можете да извлечете стойностите, съхранени в колоната на таблица, като използвате оператор SELECT-INTO. Така че нека да продължим напред с нашия пример и да научим как да инициализираме дефинирана от потребител променлива на запис с помощта на оператор SELECT-INTO.

След това ще напиша раздела за изпълнение. В секцията за изпълнение ще имаме оператор SELECT, който ще обединява таблицата на служителите и таблицата на отделите и ще връща първото име и името на отдела на конкретния служител.

BEGIN
  SELECT first_name , department_name 
  INTO var1.f_name, var1.d_name
  FROM employees  join departments
  Using (department_id) WHERE employee_id = 100; 
  DBMS_OUTPUT.PUT_LINE(var1.f_name||' '||var1.d_name);
END;

Изявлението за избор, което имаме тук, ще върне първото име и името на отдела на служителя, чийто идентификатор на служител е 100. Данните за двете колони идват от различни таблици, така че използвахме JOIN тук. Тъй като в заявката участват две различни таблици, следователно в такава ситуация използването на базирана на таблица променлива на запис не е възможно, следователно жизнеспособното решение е променливата на записа, дефинирана от потребителя.

Нека обединим всички горни парчета кодове заедно в един анонимен PL/SQL блок.

SET SERVEROUTPUT ON;
DECLARE
  TYPE rv_dept IS RECORD(
    f_name  VARCHAR2(20),
    d_name  departments.department_name%type 
  );
  var1 rv_dept;
BEGIN
  SELECT first_name , department_name 
  INTO var1.f_name, var1.d_name
  FROM employees  join departments
  Using (department_id) WHERE employee_id = 100;
  
  DBMS_OUTPUT.PUT_LINE(var1.f_name||' '||var1.d_name);
END;
/

Ето как създаваме променлива на тип данни на дефиниран от потребителя запис в базата данни на Oracle. Надяваме се, че ви е харесало четенето и сте научили нещо ново. Освен това раздавам стоките на RebellionRider на един произволно избран победител всеки месец, така че не забравяйте да споделите този блог с приятелите си в социалните си мрежи.

Това е всичко, хора, благодаря и приятен ден!


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да създадете вложена таблица като обект на база данни в Oracle

  2. как да добавите секунда в времевата марка на Oracle

  3. Показване на всички заявки, идващи към база данни на Oracle

  4. Инсталиране на Oracle Instant Client

  5. Group_concat MySQL функцията е еквивалентна в Oracle