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