sql >> Databáze >  >> RDS >> Oracle

Jak vytvořit uživatelsky definovanou proměnnou datového typu záznamu v databázi Oracle

Doposud jsme viděli, jak vytvořit proměnné datového typu záznamu založené na tabulce a kurzoru. Ten, který zbývá, je datový typ záznamu definovaný uživatelem, kterému se budeme věnovat v dnešním tutoriálu.

Jak název napovídá, záznamy definované uživatelem jsou proměnné záznamu, jejichž struktura je definována uživatelem, což je na rozdíl od záznamů založených na tabulce nebo kurzoru, jejichž struktury jsou odvozeny z příslušných tabulek nebo kurzoru. To znamená, že pomocí uživatelsky definovaných záznamů můžete mít úplnou kontrolu nad strukturou proměnné záznamu.

Proces vytváření uživatelsky definované proměnné záznamu je rozdělen do dvou částí. Před definováním záznamu musíme nejprve definovat TYPE pro proměnnou záznamu. Tento TYP se stane základem proměnné User Define Record a pomůže při řízení její struktury. Jakmile je TYPE úspěšně deklarován, můžeme jej použít pro vytvoření naší proměnné záznamu definovaného uživatelem.

Syntaxe záznamů definovaných uživatelem v databázi Oracle

Níže je uvedena syntaxe pro vytvoření TYPE pro uživatelsky definovanou proměnnou datového typu záznamu.

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

Jakmile máme deklarován TYP, jsme připraveni vytvořit naši záznamovou proměnnou. Tato proměnná pak získá všechny vlastnosti typu, pomocí kterého je vytvořena. A zde je syntaxe pro vytvoření proměnné datového typu záznamu definovaného uživatelem.

record_name TYPE_NAME;

Všimli jste si, že na rozdíl od proměnné záznamu založené na tabulce nebo kurzoru zde pro deklaraci proměnné záznamu nemusíme používat atribut %ROWTYPE?

Podrobné vysvětlení výše uvedené syntaxe naleznete ve výukovém videu na mém kanálu YouTube.

Příklad:Jak vytvořit uživatelsky definovanou proměnnou datového typu záznamu.

Krok 1:Deklarujte typ pro proměnnou záznamu definovaného uživatelem

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

Krok 2:Deklarujte uživatelsky definovanou proměnnou záznamu

Po vytvoření TYPU jste připraveni vytvořit svou uživatelsky definovanou proměnnou záznamu.

var1 rv_dept;

Tento výše uvedený příkaz PL/SQL vytvoří proměnnou záznamu s názvem VAR1.

Krok 3:Inicializujte uživatelem definovanou proměnnou záznamu.

Uživatelem definovaná proměnná záznamu může být inicializována několika způsoby. Například můžete inicializovat proměnnou záznamu přímo přiřazením hodnoty pomocí přiřazení proměnné nebo můžete načíst hodnoty uložené do sloupce tabulky pomocí příkazu SELECT-INTO. Pojďme tedy dále s naším příkladem a naučte se, jak inicializovat uživatelem definovanou proměnnou záznamu pomocí příkazu SELECT-INTO.

Dále napíšu sekci provedení. V sekci provádění budeme mít příkaz SELECT, který spojí tabulku zaměstnanců a tabulku oddělení a vrátí křestní jméno a název oddělení konkrétního zaměstnance.

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;

Příkaz select, který zde máme, vrátí křestní jméno a název oddělení zaměstnance, jehož ID zaměstnance je 100. Data pro oba sloupce pocházejí z různých tabulek, proto jsme zde použili JOIN. Protože jsou v dotazu zahrnuty dvě různé tabulky, v takové situaci není použití Table Based Record Variable možné, proto je životaschopným řešením uživatelsky definovaná proměnná záznamu.

Spojme všechny výše uvedené kusy kódů dohromady do jednoho anonymního bloku PL/SQL.

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

Takto vytvoříme proměnnou datového typu záznamu definované uživatelem v databázi Oracle. Doufám, že se vám čtení líbilo a dozvěděli jste se něco nového. Každý měsíc také rozdávám zboží RebellionRider jednomu náhodně vybranému výherci, takže nezapomeňte sdílet tento blog se svými přáteli na své sociální síti.

To je vše, přátelé, děkuji a přeji krásný den!


  1. Je možné vytvořit typy objektů databáze Oracle uvnitř PL/SQL?

  2. Rails Migrations:pokusili se změnit typ sloupce z řetězce na celé číslo

  3. Query Store:Zobrazení vlivu indexů na přílohy

  4. MySQL - vynutit nepoužívat cache pro testování rychlosti dotazu