Oracle PLSQL записи
- PLSQL записите са съставни типове данни. Това е група от свързани елементи от данни като полета, всеки със собствено име и тип данни.
- PL/SQL записите са подобни по структура на ред в таблица на база данни. Всеки скаларен тип данни в записа съдържа стойност.
- Записът се състои от компоненти от произволен скаларен, PL/SQL запис или PL/SQL тип таблица.
- Могат да се манипулират като единична единица. Записите могат да имат толкова полета, колкото се изисква.
Как да декларирам записите на Oracle PLSQL
( A) Потребителски дефиниран PLSQL запис
DECLARE TYPE employee_record_type IS RECORD (emp_id NUMBER(10) NOT NULL, dept_no dept.deptno%TYPE, nаme varchar2(20), hire_dаte DATE := SYSDATE Last_name varchar2(20) ); employee_record employee_record_type;
(1) Няма предварително дефинирани типове данни за Record, както има за скаларния тип данни. Така че първо трябва да създадете и след това да присвоите
(2) Всяко поле в запис има уникално име и конкретен тип данни
(3) %TYPE се използва за деклариране на променлива, която е от същия тип като колоната на определена таблица.
(4) ние използваме ТИПА . . . Инструкцията RECORD за създаване на свой собствен тип запис е, когато полето на вашия запис трябва да бъде специфичен за PL/SQL тип, като BOOLEAN. Ако използвате %ROWTYPE, типовете данни на всички полета ще бъдат ограничени до SQL типове
(5) Записите сами по себе си са специфични за PL/SQL типове данни, така че друга хубава характеристика на дефинираните от потребителя типове записи е, че можете да дефинирате тип запис като поле в друго тип на запис
DECLARE TYPE emp_phone IS RECORD ( Stdcode PLS_INTEGER, phn_number PLS_INTEGER, extension PLS_INTEGER ); TYPE contact_phone IS RECORD ( day_phone# emp_phone, eve_phone# emp_phone, cell_phone# emp_phone ); sales_rep contact_phone;
Б) Можем също да дефинираме запис като тип ред на таблица
DECLARE sales_data_rec apps.sales_data%ROWTYPE; |
1) Това ни позволява да декларираме запис въз основа на колекцията от колоната в таблицата или изгледа
2) Използваме префикса %ROWTYPE с таблицата на базата данни, за да го декларираме
3) Полетата в записа вземат своето име и тип данни от колоната на таблицата
В) Можем също да използваме %ROWTYPE, за да декларираме запис, който има същата структура като оператор SELECT в курсора.
Това е особено полезно за извличане на подмножество от колони от таблица или колони от множество таблици.
DECLARE CURSOR emp_cur IS SELECT lastname, age,firstname FROM employees; l_employee emp_cur%ROWTYPE;
Всеки път, когато извличате данни от курсор в PL/SQL променливи, трябва да декларирате запис на базата на този курсор с %ROWTYPE и да го извлечете в този запис. По този начин, когато и ако списъкът SELECT на курсора се промени, броят и типът на полетата в записа ще се променят съответно и всичко ще остане в синхрон.
Как да предавам стойности към Oracle PLSQL записи
Синтаксис | Употреба |
rec_name.col_name :=стойност; | За директно присвояване на стойност на конкретна колона на запис. |
rec_name.column_name :=стойност; | За директно присвояване на стойност на конкретна колона на запис, ако записът е деклариран с помощта на %ROWTYPE. |
ИЗБЕРЕТЕ колона1, колона2 INTO rec_name.col_name1, rec_name.col_name2 FROM table_name [клауза WHERE]; | За да присвоите стойности на всяко поле на запис от таблицата на базата данни. |
ИЗБЕРЕТЕ * INTO име_на запис ОТ име_на_таблица [клауза WHERE]; | За да присвоите стойност на всички полета в записа от таблица на база данни. |
име_променлива :=име_на_запис.име_на_кола; | За да получите стойност от колона за запис и да я присвоите на променлива. |
Трябва да прочетете тези други публикации на PLSQL
Структура и типове блокове на Oracle PLSQL
Въпроси за интервю за Oracle plsql
Бързи уроци за Oracle sql и plsql