sql >> Database >  >> RDS >> Oracle

Wat zijn PLSQL-records in Oracle?

Oracle PLSQL-records

  • PLSQL-records zijn samengestelde datatypes. Het is een groep gerelateerde data-items als velden, elk met zijn eigen naam en datatype.
  • PL/SQL-records zijn qua structuur vergelijkbaar met een rij in een databasetabel. Elk scalair gegevenstype in het record heeft een waarde.
  • Een record bestaat uit componenten van elk scalair, PL/SQL-record of PL/SQL-tabeltype.
  • Ze kunnen als een enkele eenheid worden gemanipuleerd. Records kunnen zoveel velden bevatten als nodig is.

Hoe de Oracle PLSQL-records declareren

( A)Door de gebruiker gedefinieerde PLSQL-record

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) Er zijn geen vooraf gedefinieerde datatypes voor Record zoals er zijn voor het scalaire datatype. U moet dus eerst creëren en vervolgens toewijzen

(2) Elk veld in record heeft een unieke naam en een specifiek gegevenstype

(3) %TYPE wordt gebruikt om een ​​variabele te declareren die van hetzelfde type is als de kolom van een gespecificeerde tabel.

(4) we gebruiken het TYPE . . . RECORD-instructie om uw eigen recordtype te maken, is wanneer een veld van uw record een PL/SQL-specifiek type moet zijn, zoals BOOLEAN. Als u %ROWTYPE gebruikt, worden de datatypes van alle velden beperkt tot SQL-types

(5) Records zijn zelf PL/SQL-specifieke datatypes, dus een andere leuke eigenschap van door de gebruiker gedefinieerde recordtypes is dat u een recordtype kunt definiëren als een veld in another opnametype

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;

B) We kunnen ook de . definiëren opnemen als tabelrijtype

VERKLAREN sales_data_rec apps.sales_data%ROWTYPE;

1) Hiermee kunnen we een record declareren op basis van de verzameling van de kolom in de tabel of weergave

2) We gebruiken het %ROWTYPE-voorvoegsel met de databasetabel om het te declareren

3) Velden in de record nemen hun naam en datatype over uit de kolom van de tabel

C) We kunnen ook %ROWTYPE gebruiken om een ​​record te declareren dat dezelfde structuur heeft als een SELECT-instructie in een cursor.

Dit is vooral handig voor het ophalen van een subset van kolommen uit een tabel of kolommen uit meerdere tabellen.

DECLARE 
 CURSOR emp_cur
 IS
 SELECT lastname, age,firstname FROM employees;
 l_employee   emp_cur%ROWTYPE;

Telkens wanneer u gegevens van een cursor ophaalt in PL/SQL-variabelen, moet u een record declareren op basis van die cursor met %ROWTYPE en het in dat record ophalen. Op deze manier zullen, wanneer en als de SELECT-lijst van de cursor verandert, het aantal en het type velden in het record dienovereenkomstig veranderen en blijft alles synchroon.

Waarden doorgeven aan Oracle PLSQL-records

Syntaxis Gebruik
rec_name.col_name :=waarde; Om direct een waarde toe te wijzen aan een specifieke kolom van een record.
rec_name.column_name :=waarde; Om direct een waarde toe te wijzen aan een specifieke kolom van een record, als de record is gedeclareerd met %ROWTYPE.
SELECTEER kolom1, kolom2 INTO rec_name.col_name1, rec_name.col_name2 FROM table_name [WHERE-clausule]; Waarden toewijzen aan elk veld van een record uit de databasetabel.
SELECT * INTO record_name FROM table_name [WHERE clausule]; Een waarde toewijzen aan alle velden in het record vanuit een databasetabel.
variabele_naam :=record_name.col_name; Een waarde halen uit een recordkolom en deze toewijzen aan een variabele.

Je moet deze  andere PLSQL-berichten lezen

Oracle PLSQL-blokstructuur en -typen
Oracle plsql-interviewvragen
Snelle Oracle-sql- en plsql-zelfstudies


  1. Selecteer laatste N rijen van MySQL

  2. Ordenen op volgorde van waarden in een SQL IN()-clausule

  3. Na een impasse met één transactie in alle SQL Server-versies

  4. SQL Server Ontsnap aan een onderstrepingsteken