Do tej pory widzieliśmy, jak tworzyć zmienne typu danych rekordów oparte na tabeli i kursorze. Jedyne, co pozostało, to typ danych zdefiniowany przez użytkownika, który omówimy w dzisiejszym samouczku.
Jak sama nazwa wskazuje, rekordy definiowane przez użytkownika to zmienne rekordów, których struktura jest definiowana przez użytkownika, w przeciwieństwie do rekordów opartych na tabeli lub kursorach, których struktury pochodzą z odpowiednich tabel lub kursora. Oznacza to, że dzięki rekordom zdefiniowanym przez użytkownika możesz mieć pełną kontrolę nad strukturą swojej zmiennej rekordu.
Proces tworzenia zmiennej rekordu definiowanej przez użytkownika jest podzielony na dwie części. Przed zdefiniowaniem rekordu musimy najpierw zdefiniować TYP dla zmiennej rekordu. Ten TYP stanie się podstawą zmiennej Rekord definiowany przez użytkownika i pomoże w sterowaniu jej strukturą. Gdy TYPE zostanie pomyślnie zadeklarowany, możemy go użyć do utworzenia zmiennej rekordu definiowanej przez użytkownika.
Składnia rekordów zdefiniowanych przez użytkownika w bazie danych Oracle
Poniżej znajduje się składnia tworzenia TYPU dla zmiennej typu danych rekordu zdefiniowanej przez użytkownika.
TYPE type_name IS RECORD ( field_name1 datatype 1, field_name2 datatype 2, ... field_nameN datatype N );
Po zadeklarowaniu naszego TYPE wszyscy jesteśmy gotowi do stworzenia naszej zmiennej rekordu. Ta zmienna uzyska wtedy wszystkie właściwości typu, za pomocą którego została utworzona. A oto składnia tworzenia zmiennej typu danych rekordu definiowanej przez użytkownika.
record_name TYPE_NAME;
Czy zauważyłeś, że w przeciwieństwie do zmiennej rekordu opartej na tabeli lub kursorze, nie musimy tutaj używać atrybutu %ROWTYPE do deklarowania zmiennej rekordu?
Możesz obejrzeć samouczek wideo na moim kanale YouTube, aby uzyskać szczegółowe wyjaśnienie powyższej składni.
Przykład:jak utworzyć zmienną typu danych rekordu zdefiniowaną przez użytkownika.
Krok 1:Zadeklaruj typ zmiennej rekordu zdefiniowanej przez użytkownika
SET SERVEROUTPUT ON; DECLARE TYPE rv_dept IS RECORD( f_name VARCHAR2(20), d_name DEPARTMENTS.department_name%TYPE );
Krok 2:Zadeklaruj zmienną rekordu definiowaną przez użytkownika
Po utworzeniu TYPU wszystko jest gotowe do utworzenia zmiennej rekordu zdefiniowanej przez użytkownika.
var1 rv_dept;
Powyższa instrukcja PL/SQL utworzy zmienną rekordu o nazwie VAR1.
Krok 3:Zainicjuj zmienną rekordu zdefiniowaną przez użytkownika.
Zmienna rekordu zdefiniowana przez użytkownika może być inicjowana na wiele sposobów. Na przykład możesz zainicjować zmienną rekordu bezpośrednio przez przypisanie jej wartości za pomocą zmiennej przypisania lub możesz pobrać wartości przechowywane w kolumnie tabeli za pomocą instrukcji SELECT-INTO. Przejdźmy więc dalej z naszym przykładem i dowiedzmy się, jak zainicjować zmienną rekordu zdefiniowaną przez użytkownika za pomocą instrukcji SELECT-INTO.
Następnie napiszę sekcję dotyczącą egzekucji. W sekcji wykonania będziemy mieli instrukcję SELECT, która będzie łączyć tabelę pracowników i działów oraz zwracać imię i nazwę działu konkretnego pracownika.
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;
Wyrażenie select, które tutaj mamy, zwróci imię i nazwę działu pracownika, którego identyfikator pracownika to 100. Dane dla obu kolumn pochodzą z różnych tabel, dlatego użyliśmy tutaj JOIN. Ponieważ w zapytaniu są zaangażowane dwie różne tabele, w takiej sytuacji użycie zmiennej rekordu opartej na tabeli nie jest możliwe, dlatego dobrym rozwiązaniem jest zmienna rekordu zdefiniowana przez użytkownika.
Połączmy wszystkie powyższe fragmenty kodów w jeden anonimowy blok 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; /
W ten sposób tworzymy zmienną typu danych rekordu zdefiniowanego przez użytkownika w bazie danych Oracle. Mam nadzieję, że podobało Ci się czytanie i nauczyłeś się czegoś nowego. Ponadto co miesiąc rozdaję gadżety RebellionRider jednemu losowo wybranemu zwycięzcy, więc pamiętaj, aby udostępnić ten blog znajomym w swojej sieci społecznościowej.
To wszystko ludzie dzięki i miłego dnia!