Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Jak utworzyć VARRAY jako obiekt bazy danych w bazie danych Oracle

Zakres VARRAY, który jest tworzony jako element bloku PL/SQL, jest ograniczony do bloku, w którym jest tworzony, co oznacza, że ​​nie możemy używać tego VARRAY poza jego blokiem, ani nawet używać go ponownie i to jest jego największa wada. Więc śmiało i czytaj dalej, aby dowiedzieć się, jak możemy przezwyciężyć tę wadę VARRAY.

Tę wadę można łatwo przezwyciężyć, jeśli znajdziemy sposób na utworzenie VARRAY poza blokiem PL/SQL i zapisanie go na stałe w schemacie. Na szczęście możemy osiągnąć oba cele, tworząc VARRAY jako obiekt bazy danych. Właśnie tego nauczymy się w tym samouczku.

W tym samouczku dowiemy się –

  • Jak utworzyć VARRAY jako obiekt bazy danych.
  • Jak korzystać z tej varray.
  • Jak wstawić dane do VARRAY.
  • Jak pobrać dane do (z) VARRAY
  • Jak zaktualizować dane VARRAY.

Zacznijmy od pierwszego kroku.

Jak utworzyć VARRAY jako obiekt bazy danych?

	SET SERVEROUTPUT ON;
	CREATE OR REPLACE TYPE dbObj_vry IS VARRAY (5) OF NUMBER;
	/

Powyższy kod po pomyślnym wykonaniu utworzy VARRAY o nazwie dbObj_vry, który będzie miał limit rozmiaru 5 elementów, a ich typ danych to LICZBA. Ta VARRAY ma szerszy zakres i może być używana nie tylko wewnątrz bloku PL/SQL, ale także z innymi obiektami schematu.

Jak korzystać z VARRAY utworzonego jako obiekt bazy danych?

Zaletą zdefiniowania VARRAY jako obiektu bazy danych jest to, że może się do niego odwoływać dowolny program, który ma uprawnienia do jego używania. Możesz używać VARRAY z tabelami, rekordami, a nawet z blokami PL/SQL.

Zróbmy przykład:

Przykład 1. Jak zdefiniować kolumnę tabeli za pomocą VARRAY?

CREATE TABLE calendar(
    day_name        VARCHAR2(25),
    day_date        dbObj_vry
);
/

W powyższym kodzie stworzyliśmy tabelę o nazwie Kalendarz, która ma dwie kolumny nazwa_dni i data_dzień. Pierwsza kolumna może zawierać dane typu danych VARCHAR2, podczas gdy druga kolumna może zawierać dane typu dbObj_vry, który jest VARRAY.

Informacje:co oznacza zdefiniowanie kolumny tabeli jako typu VARRAY?
Zdefiniowanie kolumny tabeli jako typu VARRAY oznacza, że ​​może ona przechowywać w niej „n” wartości. Gdzie „n” jest równe limitowi rozmiaru tej varray. W naszym przypadku limit rozmiaru VARRAY wynosi 5, co oznacza, że ​​kolumna „Data dnia” tabeli Kalendarz może zawierać 5 wartości.

Jak wstawić dane do VARRAY?

INSERT INTO calendar ( day_name, day_date ) 
VALUES ( 'Sunday', dbObj_vry (7, 14, 21, 28) );    

Ta instrukcja insert DML wstawi wiersz do tabeli kalendarza. Wstawianie danych do pierwszej kolumny „Nazwa dnia”, która ma typ danych varchar2 jest łatwe. Wystarczy wpisać żądane dane i zawrzeć je w pojedynczych cudzysłowach. Ale to samo nie dotyczy drugiej kolumny „Data dnia”, która jest typu VARRAY. Aby wstawić dane do kolumny typu VARRAY należy najpierw wpisać nazwę zmiennej i podać dane.

Musisz także upewnić się, że cztery rzeczy

  1. Dane, które podajesz, muszą być ujęte w nawiasach.
  2. Typ danych musi być zgodny z typem danych elementów twojego VARRAY, który w naszym przypadku to NUMBER.
  3. Liczba elementów wstawianych do kolumny musi być mniejsza lub równa limitowi rozmiaru zmiennej VARRAY. W naszym przypadku jest to 5 i wstawiamy 4 elementy do kolumny, co jest w zupełności OK. Ale jeśli załóżmy, że wstawię 6 elementów do kolumny, to wystąpi błąd.
  4. Jeśli wstawiasz wiele danych do kolumny VARRAY, upewnij się, że elementy są oddzielone od siebie średnikiem.

Jak pobrać dane z VARRAY?

Dane można pobrać za pomocą instrukcji SELECT. Każda poprawnie napisana instrukcja SELECT wykona pracę. Na przykład

SELECT * FROM calendar;

Spowoduje to pobranie wszystkich danych z kalendarza tabeli.

W przypadku, gdy chcesz wyświetlić dane zapisane w kolumnie zawierającej dane typu VARRAY, w formacie relacyjnym, możesz skorzystać z wyrażenia TABLE. Na przykład

SELECT 
    tab1.day_name, 
    vry.column_value AS "Date"
FROM calendar tab1, TABLE (tab1.day_date) vry;

Ta instrukcja SELECT pokaże dane z obu kolumn w formacie relacyjnym. Wyrażenie TABLE może otworzyć instancję kolekcji i reprezentować wiersze obiektów w formacie relacyjnym.

Jak zaktualizować dane kolumny typu VARRAY?

Aktualizacja wartości kolumny typu VARRAY jest dość prosta. Poniższy przykład pokaże, jak zaktualizować wartości kolumn day_date.

UPDATE calendar 
SET day_date = dbObj_vry(10,14,21,28) 
WHERE day_name = 'Sunday';

Przykład 2. Jak używać VARRAY z blokiem PL/SQL?

W powyższym przykładzie nauczyliśmy się, jak używać zmiennej VARRAY, która jest tworzona jako obiekt bazy danych, do definiowania kolumny tabeli. Teraz zobaczymy, jak używać tej samej zmiennej varray w bloku PL/SQL.

DECLARE
    vry_obj dbObj_vry    := dbObj_vry();
BEGIN
    FOR i IN 1..vry_obj.LIMIT
    LOOP
        vry_obj.EXTEND; 
        vry_obj(i):= 10*i;
        DBMS_OUTPUT.PUT_LINE(vry_obj(i));    
    END LOOP;
END;
/

Widziałeś ten przykład w ostatnim samouczku. Tutaj nie ma tak dużych zmian, poza tym, że tym razem zamiast definiować VARRAY wewnątrz bloku, stworzyliśmy go jako samodzielny obiekt bazy danych. Proponuję zajrzeć do ostatniego samouczka, w którym szczegółowo wyjaśniłem powyższy kod.

To jest samouczek PL/SQL dotyczący tworzenia VARRAY jako obiektu bazy danych w Oracle. Mam nadzieję, że podobało Ci się czytanie, jeśli tak, udostępnij tego bloga znajomym w swojej sieci społecznościowej. Dzięki i życzę miłego dnia!


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Indeks partycji Oracle

  2. Jak wyświetlić wynik instrukcji SELECT, która jest wykonywana przy użyciu natywnego dynamicznego SQL?

  3. Czy w Oracle można WSTAWIĆ lub UAKTUALNIĆ rekord za pomocą widoku?

  4. Jak mogę naprawić ten błąd:nieobsługiwany SQL92?

  5. Jakieś wady flag bitowych w kolumnach bazy danych?