Tipul înregistrărilor Oracle PL / SQL cu exemple

Cuprins:

Anonim

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 coloană dorită.

  • Grupează una sau mai multe coloane pentru a forma un nou tip de date
  • Aceste coloane vor avea propriul nume și tipul 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 utilizat pentru a declara o variabilă în programe.
  • Acesta va folosi cuvântul cheie „TIP” pentru a instrui compilatorul că creează noul tip de date.
  • Poate fi creat la „ nivel de bază de date”, care poate fi stocat ca obiecte ale bazei de date, poate fi utilizat pe toată baza de date sau poate fi creat la „ niveluri de subprogram” , care este vizibil numai în interiorul subprogramelor.
  • Tipul de înregistrare la nivel de bază de date poate fi de asemenea declarat pentru coloanele tabelului, astfel încât o singură coloană să poată păstra datele complexe.
  • Datele din acest tip de date pot fi accesate făcând referire la variabila_nume urmată de operatorul de perioadă (.) Urmat de coloana_nume, adică '. '

Sintaxa declarației la nivelul bazei de date:

CREATE TYPE  IS RECORD( ,);

În prima sintaxă, putem vedea cuvântul cheie „CREAȚI TIP”, acesta instruiește compilatorul 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.

Sintaxa declarației la nivel de subprogram:

DECLARETYPE  IS RECORD( ,);BEGIN;END;

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

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

Exemplul 1: Tipul RECORD ca obiect de bază de date

În acest program, vom vedea cum să creăm „Tip 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

Explicatie cod:

  • 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 sunt definite.
  • Acum „emp_det” este similar cu alt tip de date (cum ar fi NUMBER, VARCHAR @ etc.) și este vizibil în întreaga bază de date. Prin urmare, acest lucru poate fi utilizat în întreaga bază de date pentru a declara variabila de acest tip.

Ieșire:

A fost creat tipul „emp_det” ca tip de înregistrare la nivelul bazei de date.

Exemplul 2: tip de î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ă populăm și să preluăm valorile din acesta după nivelul coloanei.

Vom crea „emp_det” record_type la nivelul subprogramului și vom folosi același lucru pentru a popula și a afișa date din acesta.

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;/

Ieșire:

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

Explicatie cod:

  • Linia de cod 2-8 : Tipul de înregistrare „emp_det” este declarat cu coloanele emp_no, emp_name, salariu și managerul tipului 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 conține valoarea care conține toate cele 4 câmpuri / coloane de mai sus.
  • Linia de cod 11: popularea câmpului „emp_no” din „guru99_emp_rec” cu valoarea 1001.
  • Linia de cod 12: popularea câmpului „emp_name” din „guru99_emp_rec” cu valoarea XXX.
  • Linia de cod 13: popularea câmpului „manager” din „guru99_emp_rec” cu valoarea 1000.
  • Linia de cod 14: Popularea câmpului „salariu” din „guru99_emp_rec” cu valoarea 10000.
  • Linia de cod 15-19: Afișarea valorii „guru99_emp_rec” în ieșire.

Exemplul 3: tip de î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 populăm ca nivel de rând. Vom crea „emp_det” record_type la nivelul subprogramului și vom folosi același lucru pentru a popula și a afișa date din acesta.

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;/

Explicatie cod:

  • Linia de cod 2-8 : Tipul de înregistrare „emp_det” este declarat cu coloanele emp_no, emp_name, salariu și managerul tipului 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 conține valoarea care conține toate cele 4 câmpuri / coloane de mai sus.
  • Linia de cod 11: Popularea tabelului emp cu datele 1002 ca emp_no, YYY ca emp_name, 15000 ca salariu și 1000 ca număr manager.
  • Linia de cod 12: Realizarea 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 selectată pentru numărul de angajat 1002.
  • Linia de cod 15-19: Afișarea valorii „guru99_emp_rec” în ieșire.

Ieșire:

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

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