Co to jest typ rekordu?
Typ rekordu to złożony typ danych, który umożliwia programiście utworzenie nowego typu danych z żądaną strukturą kolumn.
- Grupuje jedną lub więcej kolumn, tworząc nowy typ danych
- Te kolumny będą miały własną nazwę i typ danych
- Typ rekordu może akceptować dane
- Jako pojedynczy rekord składający się z wielu kolumn LUB
- Może przyjąć wartość dla jednej konkretnej kolumny rekordu
- Typ rekordu oznacza po prostu nowy typ danych. Po utworzeniu typu rekordu zostanie on zapisany w bazie danych jako nowy typ danych i to samo zostanie użyte do zadeklarowania zmiennej w programach.
- Użyje słowa kluczowego „TYPE”, aby poinstruować kompilator, że tworzy nowy typ danych.
- Może być utworzony na „ poziomie bazy danych”, który może być przechowywany jako obiekty bazy danych, używany w całej bazie danych lub może być utworzony na „ poziomach podprogramów” , które są widoczne tylko wewnątrz podprogramów.
- Typ rekordu na poziomie bazy danych można również zadeklarować dla kolumn tabeli, dzięki czemu w jednej kolumnie mogą znajdować się złożone dane.
- Dostęp do danych w tym typie danych można uzyskać, odwołując się do ich nazwa_zmiennej, po której następuje operator kropki (.), Po którym następuje nazwa_kolumny, tj. „
. ”
Składnia deklaracji na poziomie bazy danych:
CREATE TYPEIS RECORD( ,);
W pierwszej składni możemy zobaczyć słowo kluczowe „CREATE TYPE”, które instruuje kompilator, aby utworzył typ rekordu o nazwie „type_name_db” z określoną kolumną jako obiektem bazy danych.
Jest to indywidualne oświadczenie, a nie w żadnym bloku.
Składnia deklaracji na poziomie podprogramu:
DECLARETYPEIS RECORD( ,);BEGIN ;END;
W składni tworzymy typ rekordu o nazwie „nazwa_typu” tylko wewnątrz podprogramu.
W obu metodach deklaracji sposób definiowania kolumny i typu danych jest podobny.
Przykład 1: RECORD Typ jako obiekt bazy danych
W tym programie zobaczymy, jak utworzyć „Typ rekordu” jako obiekt bazy danych. Utworzymy typ rekordu „emp_det” z czterema kolumnami. Kolumny i ich typy danych są następujące:
- EMP_NO (NUMBER)
- EMP_NAME (VARCHAR2 (150))
- MANAGER (NUMBER)
- WYNAGRODZENIE (LICZBA)
CREATE TYPE emp_det IS OBJECT(EMP_NO NUMBER,EMP_NAME VARCHAR2(150),MANAGER NUMBER,SALARY NUMBER);/Wynik:
Type created
Objaśnienie kodu:
- Powyższy kod utworzy typ emp_det jako obiekt bazy danych.
- Będzie miał 4 kolumny emp_no, emp_name, menedżer i wynagrodzenie, zgodnie z definicją.
- Teraz „emp_det” jest podobny do innego typu danych (np. NUMBER, VARCHAR @ itp.) I jest widoczny w całej bazie danych. Stąd można to wykorzystać w całej bazie danych do zadeklarowania zmiennej tego typu.
Wynik:
Utworzono typ „emp_det” jako typ rekordu na poziomie bazy danych.
Przykład 2: Typ rekordu na poziomie podprogramu - Dostęp z poziomu kolumny
W tym przykładzie zobaczymy, jak utworzyć typ rekordu na poziomie podprogramu oraz jak zapełniać i pobierać z niego wartości na poziomie kolumny.
Utworzymy „emp_det” typ_rekordu na poziomie podprogramu i użyjemy tego samego do zapełnienia i wyświetlenia z niego danych.
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;/
Wynik:
Employee DetailEmployee Number: 1001Employee Name: XXXEmployee Salary: 10000Employee Manager Number: 1000
Objaśnienie kodu:
- Linia kodu 2-8 : typ rekordu „emp_det” jest zadeklarowany w kolumnach emp_no, emp_name, wynagrodzenie i menedżer typu danych NUMBER, VARCHAR2, NUMBER, NUMBER.
- Linia kodu 9: zmienna guru99_emp_rec jest zadeklarowana jako typ danych „emp_det”. Teraz ta zmienna może przechowywać wartość, która zawiera wszystkie powyższe 4 pola / kolumny.
- Linia kodu 11: Wypełnienie pola „emp_no” elementu „guru99_emp_rec” wartością 1001.
- Linia kodu 12: Wypełnianie pola „emp_name” elementu „guru99_emp_rec” wartością XXX.
- Linia kodu 13: Wypełnienie pola „manager” elementu „guru99_emp_rec” wartością 1000.
- Linia kodu 14: Wypełnianie pola „wynagrodzenie” wartości „guru99_emp_rec” wartością 10000.
- Linia kodu 15-19: wyświetlanie wartości „guru99_emp_rec” na wyjściu.
Przykład 3: Typ rekordu na poziomie podprogramu - dostęp na poziomie wiersza
W tym przykładzie zobaczymy, jak utworzyć typ rekordu na poziomie podprogramu i jak wypełnić go na poziomie wiersza. Utworzymy „emp_det” typ_rekordu na poziomie podprogramu i użyjemy tego samego do zapełnienia i wyświetlenia z niego danych.
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;/
Objaśnienie kodu:
- Linia kodu 2-8 : typ rekordu „emp_det” jest zadeklarowany w kolumnach emp_no, emp_name, wynagrodzenie i menedżer typu danych NUMBER, VARCHAR2, NUMBER, NUMBER.
- Linia kodu 9: zmienna guru99_emp_rec jest zadeklarowana jako typ danych „emp_det”. Teraz ta zmienna może przechowywać wartość, która zawiera wszystkie powyższe 4 pola / kolumny.
- Linia kodu 11: Wypełnianie tabeli emp danymi 1002 jako nr_p, YYY jako nazwa_pemp, 15000 jako wynagrodzenie i 1000 jako numer menedżera.
- Linia kodu 12: Zatwierdzenie powyższej transakcji wstawiania.
- Linia kodu 13: Wypełnianie zmiennej „guru99_emp_rec” jako danych na poziomie wiersza z zapytania wybierającego dla pracownika numer 1002.
- Linia kodu 15-19: wyświetlanie wartości „guru99_emp_rec” na wyjściu.
Wynik:
Employee DetailEmployee Number: 1002Employee Name: YYYEmployee Salary: 1000Employee Manager Number: 15000
Uwaga: Typ rekordu jest dostępny tylko na poziomie kolumny podczas przekierowywania jego wartości do dowolnego trybu wyjściowego.