Tipo di record Oracle PL / SQL con esempi

Sommario:

Anonim

Cos'è il tipo di record?

Un tipo di record è un tipo di dati complesso che consente al programmatore di creare un nuovo tipo di dati con la struttura di colonne desiderata.

  • Raggruppa una o più colonne per formare un nuovo tipo di dati
  • Queste colonne avranno il proprio nome e tipo di dati
  • Un tipo di record può accettare i dati
    • Come un singolo record che consiste di molte colonne OR
    • Può accettare il valore per una particolare colonna di un record
  • Tipo di record significa semplicemente un nuovo tipo di dati. Una volta creato il tipo di record, verrà memorizzato come nuovo tipo di dati nel database e lo stesso sarà utilizzato per dichiarare una variabile nei programmi.
  • Utilizzerà la parola chiave "TYPE" per indicare al compilatore che sta creando il nuovo tipo di dati.
  • Può essere creato a " livello database" che può essere memorizzato come oggetti database, utilizzato in tutto il database oppure può essere creato a " livelli di sottoprogramma" , che è visibile solo all'interno dei sottoprogrammi.
  • Il tipo di record a livello di database può anche essere dichiarato per le colonne della tabella in modo che una singola colonna possa contenere i dati complessi.
  • È possibile accedere ai dati in questi tipi di dati facendo riferimento al loro nome_variabile seguito dall'operatore del periodo (.) Seguito da nome_colonna, ad esempio ". "

Sintassi per la dichiarazione a livello di database:

CREATE TYPE  IS RECORD( ,);

Nella prima sintassi, possiamo vedere la parola chiave "CREATE TYPE" che indica al compilatore di creare il tipo di record denominato "type_name_db" con la colonna specificata come oggetto database.

Viene fornita come dichiarazione individuale e non all'interno di alcun blocco.

Sintassi per la dichiarazione a livello di sottoprogramma:

DECLARETYPE  IS RECORD( ,);BEGIN;END;

Nella sintassi, stiamo creando il tipo di record denominato "type_name" solo all'interno del sottoprogramma.

In entrambi i metodi di dichiarazione, il modo di definire la colonna e il tipo di dati è simile.

Esempio 1: tipo RECORD come oggetto database

In questo programma, vedremo come creare "Tipo di record" come oggetto di database. Creeremo il tipo di record "emp_det" con quattro colonne. Le colonne e il loro tipo di dati sono i seguenti:

  • EMP_NO (NUMERO)
  • EMP_NAME (VARCHAR2 (150))
  • GESTORE (NUMERO)
  • STIPENDIO (NUMERO)
CREATE TYPE emp_det IS OBJECT(EMP_NO NUMBER,EMP_NAME VARCHAR2(150),MANAGER NUMBER,SALARY NUMBER);/
Produzione:
Type created

Spiegazione del codice:

  • Il codice sopra creerà il tipo emp_det come oggetto database.
  • Avrà 4 colonne emp_no, emp_name, manager e stipendio come definito.
  • Ora 'emp_det' è simile ad altri tipi di dati (come NUMERO, VARCHAR @, ecc.) Ed è visibile nell'intero database. Quindi questo può essere utilizzato nell'intero database per dichiarare la variabile di questo tipo.

Produzione:

Creato il tipo "emp_det" come tipo di record a livello di database.

Esempio 2: Tipo di record a livello di sottoprogramma - Accesso a livello di colonna

In questo esempio, vedremo come creare un tipo di record a livello di sottoprogramma e come popolare e recuperare i valori da esso a livello di colonna.

Creeremo 'emp_det' record_type a livello di sottoprogramma e useremo lo stesso per popolare e visualizzare i dati da esso.

DECLARETYPE emp_det IS RECORD(EMP_NO NUMBER,EMP_NAME VARCHAR2(150),MANAGER NUMBER,SALARY NUMBER);guru99_emp_rec emp_det;BEGINguru99_emp_rec.emp_no:= 1001;guru99_emp_rec.emp_name:=:'XXX';guru99_emp_rec.manager:= 1000;guru99_emp_rec.salary:=10000;dbms_output.put.line('Employee Detail');dbms_output.put_line ('Employee Number: '||guru99_emp_rec.emp_no);dbms_output.put_line ('Employee Name: '||guru99_emp_rec.emp_name);dbms_output.put_line ('Employee Salary: ' ||guru99_emp_rec.salary);dbms_output.put_line ('Employee Manager Number: '||guru99_emp_rec.manager);END;/

Produzione:

Employee DetailEmployee Number: 1001Employee Name: XXXEmployee Salary: 10000Employee Manager Number: 1000

Spiegazione del codice:

  • Riga di codice 2-8 : il tipo di record "emp_det" è dichiarato con le colonne emp_no, emp_name, stipendio e gestore del tipo di dati NUMBER, VARCHAR2, NUMBER, NUMBER.
  • Riga di codice 9: la variabile guru99_emp_rec è dichiarata come tipo di dati "emp_det". Ora questa variabile può contenere il valore che contiene tutti i 4 campi / colonne sopra.
  • Riga di codice 11: popolando il campo "emp_no" di "guru99_emp_rec" con il valore 1001.
  • Riga di codice 12: popolando il campo "emp_name" di "guru99_emp_rec" con il valore XXX.
  • Riga di codice 13: popolare il campo "manager" di "guru99_emp_rec" con il valore 1000.
  • Riga di codice 14: compilazione del campo "stipendio" di "guru99_emp_rec" con valore 10000.
  • Riga di codice 15-19: Visualizzazione del valore di "guru99_emp_rec" nell'output.

Esempio 3: tipo di record a livello di sottoprogramma-accesso a livello di riga

In questo esempio, vedremo come creare un tipo di record a livello di sottoprogramma e come popolarlo a livello di riga. Creeremo 'emp_det' record_type a livello di sottoprogramma e useremo lo stesso per popolare e visualizzare i dati da esso.

DECLARETYPE emp_det IS RECORD(EMP_NO NUMBER,EMP_NAME YARCHAR2( 150),MANAGER NUMBER,SALARY NUMBER);guru99_emp_rec emp_det;BEGININSERT INTO emp (emp_no, emp_name, salary, manager) VALUES (1002,'YYY',15000,1000);COMMIT;SELECT emp_no, emp_name, salary, manager INTO guru99_emp_rec FROM emp WHERE emp_no=1002;dbms_output.put_line (‘Employee Detail’);dbms_output.put_line (‘Employee Number: '||guru99_emp_rec.emp_no);dbms_output.put_line (‘Employee Name: '||guru99_emp_rec.emp_name);dbms_output.put_line (‘Employee Salary: '||guru99_emp_rec. salary);dbms_output.put_line (‘Employee Manager Number: '||guru99_emp_rec.manager);END;/

Spiegazione del codice:

  • Riga di codice 2-8 : il tipo di record "emp_det" è dichiarato con le colonne emp_no, emp_name, stipendio e gestore del tipo di dati NUMBER, VARCHAR2, NUMBER, NUMBER.
  • Riga di codice 9: la variabile guru99_emp_rec è dichiarata come tipo di dati "emp_det". Ora questa variabile può contenere il valore che contiene tutti i 4 campi / colonne sopra.
  • Riga di codice 11: popolando la tabella emp con i dati 1002 come emp_no, YYY come emp_name, 15000 come stipendio e 1000 come numero manager.
  • Riga di codice 12: commit della transazione di inserimento sopra.
  • Riga di codice 13: popolare la variabile "guru99_emp_rec" come dati a livello di riga dalla query di selezione per il dipendente numero 1002.
  • Riga di codice 15-19: Visualizzazione del valore di "guru99_emp_rec" nell'output.

Produzione:

Employee DetailEmployee Number: 1002Employee Name: YYYEmployee Salary: 1000Employee Manager Number: 15000

Nota: è possibile accedere al tipo di record solo a livello di colonna reindirizzando il suo valore a qualsiasi modalità di output.