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

Какво представляват PLSQL записи в Oracle

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


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да АКТУАЛИЗИРАТЕ една колона, като използвате друга колона в друга таблица? SQL грешка:ORA-00933:SQL командата не е приключила правилно

  2. Как да използвате Oracle SQL*Plus

  3. Oracle SQL връща редове по произволен начин, когато не се използва ред по клауза

  4. SQL грешка:ORA-00942 таблица или изглед не съществува

  5. Как да направя топ 1 в Oracle?