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