Досега видяхме как да създадем базирани на таблица и базирани на курсор променливи на типа данни на запис. Този, който остава, е типът данни за запис от потребителя, който ще разгледаме в днешния урок.
Както подсказва името, дефинираните от потребителя записи са променливите на записа, чиято структура е дефинирана от потребителя, което е за разлика от записите, базирани на таблица или курсор, чиито структури са извлечени от съответните им таблици или курсор. Това означава, че с дефинирани от потребителя записи можете да имате пълен контрол върху структурата на вашата променлива на запис.
Процесът на създаване на променлива за дефиниране от потребителя е разделен на две части. Преди да дефинираме записа, първо трябва да дефинираме ТИПА за променливата на записа. Този ТИП ще стане основата на променливата за определяне на потребителя запис и ще помогне за управлението на нейната структура. След като 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 на един произволно избран победител всеки месец, така че не забравяйте да споделите този блог с приятелите си в социалните си мрежи.
Това е всичко, хора, благодаря и приятен ден!