Oracle Tip de înregistrări PL/SQL cu exemple

Ce este tipul de înregistrare?

Un tip de înregistrare este un tip de date complex care permite programatorului să creeze un nou tip de date cu structura de coloane dorită.

  • Grupează una sau mai multe coloane pentru a forma un nou tip de date
  • Aceste coloane vor avea propriul nume și tip de date
  • Un tip de înregistrare poate accepta datele
    • Ca o singură înregistrare care constă din mai multe coloane SAU
    • Poate accepta valoarea pentru o anumită coloană a unei înregistrări
  • Tipul de înregistrare înseamnă pur și simplu un nou tip de date. Odată ce tipul de înregistrare este creat, acesta va fi stocat ca un nou tip de date în baza de date și același lucru va fi folosit pentru a declara o variabilă în programe.
  • Va folosi cuvântul cheie 'TIP' pentru a indica compilatorului că creează noul tip de date.
  • Poate fi creat la „nivelul bazei de date” care poate fi stocat ca obiecte de bază de date, utilizat în toată baza de date sau poate fi creat la „niveluri de subprogram”, care este vizibil doar în interiorul subprogramelor.
  • Tipul de înregistrare la nivel de bază de date poate fi declarat și pentru coloanele tabelului, astfel încât o singură coloană să poată deține datele complexe.
  • Datele din aceste tipuri de date pot fi accesate făcând referire la numele_variabilă, urmat de operatorul punct (.) urmat de numele_coloană, adică „ . '

Sintaxă pentru declararea la nivel de bază de date:

Oracle Tip înregistrări PL/SQL

CREATE TYPE <type_name_db> IS RECORD
(
<column 1> <datatype>,
);

În prima sintaxă, putem vedea cuvântul cheie „CREATE TYPE”, acesta indică compilatorului să creeze tipul de înregistrare numit „type_name_db” cu coloana specificată ca obiect de bază de date.

Aceasta este dată ca o declarație individuală și nu în interiorul niciunui bloc.

Sintaxă pentru declararea la nivel de subprogram:

Oracle Tip înregistrări PL/SQL

DECLARE
TYPE <type_name> IS RECORD
(
<columnl> <datatype>,
);
BEGIN
<execution_section>;
END;

În sintaxă, creăm tipul de înregistrare numit „nume_tip” numai în cadrul subprogramului.

În ambele metode de declarare, modul de definire a coloanei și a tipului de date este similar.

Exemplul 1: Tip RECORD ca obiect bază de date

În acest program, vom vedea cum să creăm „Tipul de înregistrare” ca obiect de bază de date. Vom crea tipul de înregistrare „emp_det” cu patru coloane. Coloanele și tipul lor de date sunt după cum urmează:

  • EMP_NO (NUMĂR)
  • EMP_NAME (VARCHAR2 (150))
  • MANAGER (NUMĂR)
  • SALARIU (NUMĂR)
CREATE TYPE emp_det IS OBJECT
(
EMP_NO NUMBER,
EMP_NAME VARCHAR2(150),
MANAGER NUMBER,
SALARY NUMBER 
);
/

ieșire:

Type created

Explicația codului:

  • Codul de mai sus va crea tipul emp_det ca obiect de bază de date.
  • Va avea 4 coloane emp_no, emp_name, manager și salariu așa cum este definit.
  • Acum, „emp_det” este similar cu celălalt tip de date (cum ar fi NUMBER, VARCHAR@, etc.) Și este vizibil în întreaga bază de date. Prin urmare, aceasta poate fi folosită în întreaga bază de date pentru a declara variabila de acest tip.

ieșire:

S-a creat tipul „emp_det” ca tip de înregistrare la nivel de bază de date.

Exemplul 2: Tip înregistrare la nivel de subprogram - acces la nivel de coloană

În acest exemplu, vom vedea cum să creăm un tip de înregistrare la nivel de subprogram și cum să populați și să preluam valorile din acesta la nivel de coloană.

Vom crea „emp_det” record_type la nivel de subprogram și îl vom folosi pentru a popula și pentru a afișa date din acesta.

Oracle Tip înregistrări PL/SQL

DECLARE
TYPE emp_det IS RECORD
(
EMP_NO NUMBER, 
EMP_NAME VARCHAR2(150),
MANAGER NUMBER, 
SALARY NUMBER
);
guru99_emp_rec emp_det;
BEGIN
guru99_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;
/

ieșire:

Employee Detail
Employee Number: 1001
Employee Name: XXX
Employee Salary: 10000 
Employee Manager Number: 1000

Explicația codului:

  • Linia de cod 2-8: Tipul de înregistrare „emp_det” este declarat cu coloanele emp_no, emp_name, salariu și manager de tip de date NUMBER, VARCHAR2, NUMBER, NUMBER.
  • Linia de cod 9: Variabila guru99_emp_rec este declarată ca tip de date „emp_det”. Acum asta variabil poate deține valoarea care conține toate cele 4 câmpuri/coloane de mai sus.
  • Linia de cod 11: Se completează câmpul „emp_no” al „guru99_emp_rec” cu valoarea 1001.
  • Linia de cod 12: Se completează câmpul „emp_name” al „guru99_emp_rec” cu valoarea XXX.
  • Linia de cod 13: Se completează câmpul „manager” al „guru99_emp_rec” cu valoarea 1000.
  • Linia de cod 14: Se completează câmpul „salariu” al lui „guru99_emp_rec” cu valoarea 10000.
  • Linia de cod 15-19: Afișarea valorii „guru99_emp_rec” în ieșire.

Exemplul 3: Tip înregistrare la nivel de subprogram - acces la nivel de rând

În acest exemplu, vom vedea cum să creăm un tip de înregistrare la nivel de subprogram și cum să-l populați la nivel de rând. Vom crea „emp_det” record_type la nivel de subprogram și îl vom folosi pentru a popula și pentru a afișa date din acesta.

Oracle Tip înregistrări PL/SQL

DECLARE
TYPE emp_det IS RECORD
(
EMP_NO NUMBER,
EMP_NAME YARCHAR2( 150),
MANAGER NUMBER,
SALARY NUMBER
);
guru99_emp_rec emp_det;
BEGIN
INSERT 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;
/

Explicația codului:

  • Linia de cod 2-8: Tipul de înregistrare „emp_det” este declarat cu coloanele emp_no, emp_name, salariu și manager de tip de date NUMBER, VARCHAR2, NUMBER, NUMBER.
  • Linia de cod 9: Variabila guru99_emp_rec este declarată ca tip de date „emp_det”. Acum această variabilă poate deține valoarea care conține toate cele 4 câmpuri/coloane de mai sus.
  • Linia de cod 11: Se completează tabelul emp cu datele 1002 ca emp_no, YYY ca emp_name, 15000 ca salariu și 1000 ca număr manager.
  • Linia de cod 12: Efectuarea tranzacției de inserare de mai sus.
  • Linia de cod 13: Popularea variabilei „guru99_emp_rec” ca date la nivel de rând din interogarea de selectare pentru numărul de angajat 1002.
  • Linia de cod 15-19: Afișarea valorii „guru99_emp_rec” în ieșire.

ieșire:

Employee Detail 
Employee Number: 1002 
Employee Name: YYY 
Employee Salary: 1000 
Employee Manager Number: 15000

Notă: Tipul de înregistrare poate fi accesat numai la nivel de coloană în timp ce se redirecționează valoarea sa către orice mod de ieșire.