Rekordy Oracle PLSQL
- Rekordy PLSQL są złożonymi typami danych. Jest to grupa powiązanych elementów danych w postaci pól, z których każde ma własną nazwę i typ danych.
- Rekordy PL/SQL mają strukturę podobną do wiersza w tabeli bazy danych. Każdy skalarny typ danych w rekordzie zawiera wartość.
- Rekord składa się z komponentów dowolnego typu skalarnego, rekordu PL/SQL lub typu tabeli PL/SQL.
- Można nimi manipulować jak pojedynczą jednostką. Rekordy mogą mieć tyle pól, ile potrzeba.
Jak zadeklarować rekordy Oracle PLSQL
( A)Rekord PLSQL zdefiniowany przez użytkownika
DECLARE TYPE employee_record_type IS RECORD (emp_id NUMBER(10) NOT NULL, dept_no dept.deptno%TYPE, nаme varchar2(20), hire_dаte DATE := SYSDATE Last_name varchar2(20) ); employee_record employee_record_type;
(1) Nie ma predefiniowanych typów danych dla Record, tak jak dla skalarnego typu danych. Musisz więc najpierw utworzyć, a następnie przypisać
(2) Każde pole w rekordzie ma niepowtarzalną nazwę i określony typ danych
(3) %TYP służy do deklarowania zmiennej tego samego typu, co kolumna określonej tabeli.
(4) używamy TYPU . . . Instrukcja RECORD do tworzenia własnego typu rekordu ma miejsce, gdy pole rekordu musi być typu specyficznego dla PL/SQL, na przykład BOOLEAN. Jeśli użyjesz %ROWTYPE, typy danych wszystkich pól będą ograniczone do typów SQL
(5) Rekordy są same w sobie typami danych specyficznymi dla PL/SQL, więc kolejną miłą cechą typów rekordów zdefiniowanych przez użytkownika jest to, że możesz zdefiniować typ rekordu jako pole w innym typ rekordu
DECLARE TYPE emp_phone IS RECORD ( Stdcode PLS_INTEGER, phn_number PLS_INTEGER, extension PLS_INTEGER ); TYPE contact_phone IS RECORD ( day_phone# emp_phone, eve_phone# emp_phone, cell_phone# emp_phone ); sales_rep contact_phone;
B) Możemy również zdefiniować zapisz jako typ wiersza tabeli
DECLARE sales_data_rec apps.sales_data%ROWTYPE; |
1) To pozwala nam zadeklarować rekord na podstawie zbioru kolumny w tabeli lub widoku
2) Używamy prefiksu %ROWTYPE z tabelą bazy danych, aby ją zadeklarować
3) Pola w rekordzie pobierają swoją nazwę i typ danych z kolumny tabeli
C) Możemy również użyć %ROWTYPE do zadeklarowania rekordu, który ma taką samą strukturę jak instrukcja SELECT w kursorze.
Jest to szczególnie przydatne przy pobieraniu podzbioru kolumn z tabeli lub kolumn z wielu tabel.
DECLARE CURSOR emp_cur IS SELECT lastname, age,firstname FROM employees; l_employee emp_cur%ROWTYPE;
Za każdym razem, gdy pobierasz dane z kursora do zmiennych PL/SQL, powinieneś zadeklarować rekord oparty na tym kursorze z %ROWTYPE i pobrać go do tego rekordu. W ten sposób, kiedy i jeśli zmieni się lista SELECT kursora, liczba i typ pól w rekordzie zmieni się odpowiednio i wszystko pozostanie zsynchronizowane.
Jak przekazywać wartości do rekordów Oracle PLSQL
Składnia | Użycie |
rec_name.col_name :=wartość; | Aby bezpośrednio przypisać wartość do określonej kolumny rekordu. |
rec_name.column_name :=wartość; | Aby bezpośrednio przypisać wartość do określonej kolumny rekordu, jeśli rekord jest zadeklarowany przy użyciu %ROWTYPE. |
SELECT kolumna1, kolumna2 INTO rec_name.col_name1, rec_name.col_name2 FROM table_name [klauzula WHERE]; | Aby przypisać wartości do każdego pola rekordu z tabeli bazy danych. |
SELECT * INTO nazwa_rekordu FROM nazwa_tabeli [klauzula WHERE]; | Aby przypisać wartość do wszystkich pól w rekordzie z tabeli bazy danych. |
nazwa_zmiennej:=nazwa_rekordu.nazwa_kolumny; | Aby uzyskać wartość z kolumny rekordów i przypisać ją do zmiennej. |
Musisz przeczytać te inne posty o PLSQL
Struktura i typy bloków Oracle PLSQL
Pytania do rozmowy kwalifikacyjnej Oracle PLSQL
Szybkie samouczki Oracle sql i plsql