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

Sådan oprettes brugerdefineret registreringsdatatypevariabel i Oracle-databasen

Indtil videre har vi set, hvordan man opretter tabelbaserede og markørbaserede registreringsdatatypevariabler. Den, der er tilbage, er den brugerdefinerede registreringsdatatype, som vi skal dække i dagens selvstudie.

Som navnet antyder, er brugerdefinerede poster de postvariabler, hvis struktur er defineret af brugeren, hvilket er i modsætning til de tabelbaserede eller markørbaserede poster, hvis strukturer er afledt af deres respektive tabeller eller markør. Det betyder, at du med brugerdefinerede poster kan have fuldstændig kontrol over strukturen af ​​din postvariabel.

Oprettelsesprocessen af ​​en brugerdefineret registreringsvariabel er opdelt i to dele. Før vi definerer posten, skal vi først definere TYPE for postvariablen. Denne TYPE bliver basis for User Define Record-variablen og vil hjælpe med at drive dens struktur. Når TYPE er deklareret, kan vi bruge den til at oprette vores brugerdefinerede registreringsvariabel.

Syntaks for brugerdefinerede poster i Oracle-databasen

Nedenfor er syntaksen for oprettelse af TYPE for brugerdefineret registreringsdatatypevariabel.

TYPE type_name IS RECORD (
field_name1 datatype 1,
field_name2 datatype 2,
...
field_nameN datatype N 
);

Når vi har vores TYPE erklæret, er vi klar til at oprette vores Record Variable. Denne variabel vil derefter erhverve alle egenskaberne af den type, som den er oprettet ved hjælp af. Og her er syntaksen til at oprette den brugerdefinerede registreringsdatatypevariabel.

record_name TYPE_NAME;

Har du bemærket, at i modsætning til den tabelbaserede eller markørbaserede registreringsvariabel behøver vi ikke bruge %ROWTYPE-attributten her for at erklære postvariablen?

Du kan se videovejledningen på min YouTube-kanal for en detaljeret forklaring af ovenstående syntaks.

Eksempel:Sådan oprettes en brugerdefineret registreringsdatatypevariabel.

Trin 1:Angiv type for den brugerdefinerede postvariabel

SET SERVEROUTPUT ON;
DECLARE
  TYPE rv_dept IS RECORD(
    f_name  VARCHAR2(20),
    d_name  DEPARTMENTS.department_name%TYPE 
  );

Trin 2:Erklærer User Define Record Variable

Efter oprettelse af TYPE er du klar til at oprette din brugerdefinerede registreringsvariabel.

var1 rv_dept;

Denne ovenstående PL/SQL-sætning vil skabe en postvariabel med navnet VAR1.

Trin 3:Initialiser den brugerdefinerede registreringsvariabel.

Brugerdefineret registreringsvariabel kan initialiseres på flere måder. For eksempel kan du initialisere postvariablen direkte ved at tildele værdi til den ved hjælp af tildelingsvariabel, eller du kan hente værdierne gemt i kolonnen i en tabel ved hjælp af SELECT-INTO-sætningen. Så lad os gå videre med vores eksempel og lære, hvordan man initialiserer en brugerdefineret registreringsvariabel ved hjælp af SELECT-INTO-sætning.

Dernæst vil jeg skrive udførelsesafsnittet. I udførelsessektionen vil vi have en SELECT-sætning, som vil forbinde medarbejdertabellen og afdelingstabellen og returnere fornavnet og afdelingsnavnet på den specifikke medarbejder.

BEGIN
  SELECT first_name , department_name 
  INTO var1.f_name, var1.d_name
  FROM employees  join departments
  Using (department_id) WHERE employee_id = 100; 
  DBMS_OUTPUT.PUT_LINE(var1.f_name||' '||var1.d_name);
END;

Select-sætningen, som vi har her, vil returnere fornavnet og afdelingsnavnet på den medarbejder, hvis medarbejder-id er 100. Dataene for begge kolonner kommer fra forskellige tabeller, så vi brugte en JOIN her. Da der er to forskellige tabeller involveret i forespørgslen, er brugen af ​​tabelbaseret registreringsvariabel derfor ikke mulig i en sådan situation, og derfor er den brugbare løsning den brugerdefinerede registreringsvariabel.

Lad os samle alle ovenstående bidder af koder sammen i en enkelt anonym PL/SQL-blok.

SET SERVEROUTPUT ON;
DECLARE
  TYPE rv_dept IS RECORD(
    f_name  VARCHAR2(20),
    d_name  departments.department_name%type 
  );
  var1 rv_dept;
BEGIN
  SELECT first_name , department_name 
  INTO var1.f_name, var1.d_name
  FROM employees  join departments
  Using (department_id) WHERE employee_id = 100;
  
  DBMS_OUTPUT.PUT_LINE(var1.f_name||' '||var1.d_name);
END;
/

Det er sådan, vi opretter en brugerdefineret registreringsdatatypevariabel i Oracle-databasen. Håber du nød at læse og lærte noget nyt. Jeg udlodder også RebellionRiders merchandise til en tilfældigt udvalgt vinder hver måned, så sørg for at dele denne blog med dine venner på dit sociale område.

Det er alt folk tak og hav en god dag!


  1. Hvad er den bedste måde at skrive det første bogstav i hvert ord i en streng i SQL Server med stort

  2. Det læste forpligtede isolationsniveau

  3. mysql-lignende præstationsboost

  4. Hvordan kan jeg se forespørgsler, der udføres mod Oracle?