Oracle
 sql >> Database >  >> RDS >> Oracle

Che cosa sono i record PLSQL in Oracle

Record Oracle PLSQL

  • I record PLSQL sono tipi di dati compositi. È un gruppo di elementi di dati correlati come campi, ciascuno con il proprio nome e tipo di dati.
  • I record PL/SQL hanno una struttura simile a una riga in una tabella di database. Ciascun tipo di dati scalare nel record contiene un valore.
  • Un record è costituito da componenti di qualsiasi tipo scalare, record PL/SQL o tabella PL/SQL.
  • Possono essere manipolati come una singola unità. I ​​record possono avere tutti i campi richiesti.

Come dichiarare i record Oracle PLSQL

( A)Record PLSQL definito dall'utente

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) Non ci sono tipi di dati predefiniti per Record come per il tipo di dati scalare. Quindi devi prima creare e poi assegnare

(2) Ogni campo nel record ha un nome univoco e un tipo di dati specifico

(3) %TYPE viene utilizzato per dichiarare una variabile dello stesso tipo della colonna di una tabella specificata.

(4) usiamo il TIPO . . . L'istruzione RECORD per creare il tuo tipo di record è quando un campo del tuo record deve essere un tipo specifico PL/SQL, come BOOLEAN. Se utilizzi %ROWTYPE, i tipi di dati di tutti i campi saranno vincolati ai tipi SQL

(5) I record sono essi stessi tipi di dati specifici per PL/SQL, quindi un'altra caratteristica interessante dei tipi di record definiti dall'utente è che puoi definire un tipo di record come un campo in un altro tipo di record

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) Possiamo anche definire il registra come tipo di riga della tabella

DECLARE sales_data_rec apps.sales_data%ROWTYPE;

1) Questo ci permette di dichiarare un record in base alla raccolta della colonna nella tabella o vista

2) Usiamo il prefisso %ROWTYPE con la tabella del database per dichiararlo

3) I campi del record prendono il nome e il tipo di dati dalla colonna della tabella

C) Possiamo anche utilizzare %ROWTYPE per dichiarare un record che ha la stessa struttura di un'istruzione SELECT in un cursore.

Ciò è particolarmente utile per recuperare un sottoinsieme di colonne da una tabella o colonne da più tabelle.

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

Ogni volta che si prelevano dati da un cursore in variabili PL/SQL, è necessario dichiarare un record basato su quel cursore con %ROWTYPE e recuperarlo in quel record. In questo modo, quando e se l'elenco SELECT del cursore cambia, il numero e il tipo di campi nel record cambieranno di conseguenza e tutto rimarrà sincronizzato.

Come trasferire i valori ai record Oracle PLSQL

Sintassi Utilizzo
nome_rec.nome_col :=valore; Per assegnare direttamente un valore a una colonna specifica di un record.
nome_rec.nome_colonna :=valore; Per assegnare direttamente un valore a una colonna specifica di un record, se il record è dichiarato utilizzando %ROWTYPE.
SELECT column1, column2 INTO rec_name.col_name1, rec_name.col_name2 FROM table_name [clausola WHERE]; Per assegnare valori a ciascun campo di un record dalla tabella del database.
SELECT * INTO record_name FROM table_name [clausola WHERE]; Per assegnare un valore a tutti i campi del record da una tabella del database.
nome_variabile :=nome_record.nome_col; Per ottenere un valore da una colonna di record e assegnarlo a una variabile.

Devi leggere questi  altri post PLSQL

Struttura e tipi di blocchi Oracle PLSQL
Domande per interviste Oracle plsql
Esercitazioni rapide su Oracle sql e plsql