sql >> Databasteknik >  >> RDS >> Oracle

Hur man skapar en användardefinierad postdatatypvariabel i Oracle Database

Hittills har vi sett hur man skapar tabellbaserade och markörbaserade postdatatypvariabler. Den som är kvar är den användardefinierade postdatatypen som vi kommer att täcka i dagens handledning.

Som namnet antyder är användardefinierade poster de postvariabler vars struktur definieras av användaren, vilket är till skillnad från tabellbaserade eller markörbaserade poster vars strukturer härleds från deras respektive tabeller eller markör. Detta innebär att du med användardefinierade poster kan ha fullständig kontroll över strukturen för din postvariabel.

Skapandet av en användardefinierad postvariabel är uppdelad i två delar. Innan vi definierar posten måste vi först definiera TYPE för postvariabeln. Denna TYPE kommer att bli basen för variabeln User Define Record och hjälper till att driva dess struktur. När TYPE väl har deklarerats kan vi använda den för att skapa vår användardefinierade postvariabel.

Syntax för User Define Records i Oracle Database

Nedan finns syntaxen för att skapa TYPE för användardefinierad postdatatypvariabel.

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

När vi har deklarerat vår TYPE är vi redo att skapa vår Record Variable. Denna variabel kommer då att förvärva alla egenskaper av typen som den skapas med. Och här är syntaxen för att skapa den användardefinierade postdatatypvariabeln.

record_name TYPE_NAME;

Har du märkt att vi till skillnad från den tabellbaserade eller markörbaserade postvariabeln inte behöver använda attributet %ROWTYPE här för att deklarera postvariabeln?

Du kan titta på videohandledningen på min YouTube-kanal för en detaljerad förklaring av ovanstående syntax.

Exempel:Hur man skapar en användardefinierad postdatatypvariabel.

Steg 1:Deklarera typ för den användardefinierade postvariabeln

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

Steg 2:Deklarera User Define Record Variable

Efter att ha skapat TYP är du redo att skapa din användardefinierade postvariabel.

var1 rv_dept;

Denna ovanstående PL/SQL-sats kommer att skapa en postvariabel med namnet VAR1.

Steg 3:Initiera den användardefinierade postvariabeln.

Användardefinierad postvariabel kan initieras på flera sätt. Till exempel kan du initiera postvariabeln direkt genom att tilldela värde till den med hjälp av tilldelningsvariabel eller så kan du hämta värdena som är lagrade i kolumnen i en tabell med SELECT-INTO-satsen. Så låt oss gå vidare med vårt exempel och lära oss hur man initierar en användardefinierad postvariabel med hjälp av SELECT-INTO-satsen.

Härnäst kommer jag att skriva utförandesektionen. I exekveringssektionen kommer vi att ha en SELECT-sats som kommer att förena medarbetartabellen och avdelningstabellen och returnera förnamnet och avdelningsnamnet för den specifika medarbetaren.

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-satsen som vi har här kommer att returnera förnamnet och avdelningsnamnet för den anställde vars medarbetar-id är 100. Data för båda kolumnerna kommer från olika tabeller, så vi använde en JOIN här. Eftersom det finns två olika tabeller involverade i frågan är det i en sådan situation inte möjligt att använda tabellbaserad postvariabel, därför är den genomförbara lösningen den användardefinierade postvariabeln.

Låt oss slå samman alla ovanstående kodbitar till ett enda anonymt PL/SQL-block.

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 är så vi skapar en användardefinierad postdatatypvariabel i Oracle Database. Hoppas du tyckte om att läsa och lärde dig något nytt. Jag ger också bort RebellionRiders varor till en slumpmässigt utvald vinnare varje månad, så se till att dela den här bloggen med dina vänner på ditt sociala nätverk.

Det är allt folk tack och ha en bra dag!


  1. Konfigurera enkelt webbservern med XAMPP

  2. Så här avslutar du PostgreSQL kommandoradsverktyg:psql

  3. Aggregera en enda kolumn i frågan med många kolumner

  4. AMD EPYC 7002-seriens processorer och SQL Server