Oracle
 sql >> база данни >  >> RDS >> Oracle

Как да създадете VARRAY като обект на база данни в базата данни на Oracle

Обхватът на VARRAY, който е създаден като член на блок PL/SQL, е ограничен до блока, в който е създаден, което означава, че не можем да използваме този VARRAY извън неговия блок или дори да го използваме повторно и това е най-големият му недостатък. Така че продължете и прочетете, за да разберете как можем да преодолеем този недостатък на VARRAY.

Този недостатък може лесно да бъде преодолян, ако можем да намерим начин да създадем VARRAY извън блока PL/SQL и да го съхраняваме за постоянно в схемата. За щастие можем да постигнем и двете цели, като създадем VARRAY като обект на база данни. Точно това ще научим в този урок.

В този урок ще научим –

  • Как да създадете VARRAY като обект на база данни.
  • Как да използвам тази променлива.
  • Как да вмъкна данни в VARRAY.
  • Как да извличам данни в(от) VARRAY
  • Как да актуализирам данните на VARRAY.

Нека започнем с първата стъпка.

Как да създадем VARRAY като обект на база данни?

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

Горният код при успешно изпълнение ще създаде VARRAY с име dbObj_vry, който ще има ограничение за размер от 5 елемента и техният тип данни ще бъде NUMBER. Този VARRAY има по-широк обхват и може да се използва не само в блока PL/SQL, но и с други обекти на схемата.

Как да използвам VARRAY, създаден като обект на база данни?

Предимството на дефинирането на VARRAY като обект на база данни е, че той може да бъде препратен от всяка програма, която има разрешение да го използва. Можете да използвате VARRAY с таблици, записи или дори с PL/SQL блокове.

Нека направим примера:

Пример 1. Как да дефинирате колона на таблица с помощта на VARRAY?

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

В горния код създадохме таблица с име Calendar, която има две колони day_name и day_date. Първата колона може да съдържа данни от тип данни VARCHAR2, докато втората колона може да съдържа данни от тип dbObj_vry, който е VARRAY.

Информация:Какво означава дефинирането на колона на таблица като тип VARRAY?
Дефинирането на колона на таблица като тип VARRAY означава, че тя може да съдържа „n“ брой стойности в нея. Където 'n' е равно на ограничението за размера на тази променлива. В нашия случай ограничението за размер на VARRAY е 5, което означава, че колоната „Ден Дата“ на таблицата Календар може да съдържа 5 стойности.

Как да вмъкна данни в VARRAY?

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

Тази инструкция за вмъкване на DML ще вмъкне ред в таблицата на календара. Вмъкването на данни в първата колона „Име на ден“, която е от тип данни varchar2, е лесно. Просто трябва да напишете желаните данни и да ги поставите в единични кавички. Но същото не е вярно с втората колона „Денна дата“, която е от тип VARRAY. За да вмъкнете данни в колоната, която е от тип VARRAY, първо трябва да напишете името на променливата и да предоставите данните.

Освен това трябва да се уверите в четири неща

  1. Данните, които предоставяте, трябва да бъдат затворени в скоби.
  2. Типът данни на данните трябва да съвпада с типа данни на елементите на вашия VARRAY, който в нашия случай е NUMBER.
  3. Броят на елементите, които вмъквате в колоната, трябва да бъде по-малък или равен на ограничението за размер на VARRAY. В нашия случай е 5 и вмъкваме 4 елемента в колоната, което е напълно ок. Но ако предположим, че вмъкна 6 елемента в колоната, тогава ще има грешка.
  4. Ако вмъквате множество данни в колона VARRAY, не забравяйте да разделите елементите един от друг с помощта на точка и запетая.

Как да извлека данните от VARRAY?

Данните могат да бъдат извлечени с помощта на оператор SELECT. Всеки правилно написан оператор SELECT ще свърши работата. Например

SELECT * FROM calendar;

Това ще извлече всички данни от табличния календар.

В случай, че искате да покажете данните, съхранени в колоната, която съдържа данни от тип VARRAY, в релационен формат, тогава можете да използвате израза TABLE. Например

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

Този оператор SELECT ще ви покаже данните от двете колони в релационен формат. Изразът TABLE може да отвори екземпляра на колекцията и да представи редовете на обекта в релационен формат.

Как да актуализирам данните от колона тип VARRAY?

Актуализирането на стойностите на колоната от типа VARRAY е доста просто. Примерът по-долу ще ви покаже как да актуализирате стойностите на колоните day_date.

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

Пример 2. Как да използвам VARRAY с PL/SQL блок?

В горния пример научихме как да използваме VARRAY, който е създаден като обект на база данни, за да дефинираме колоната на таблица. Сега ще видим как да използваме същата променлива в 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;
/

Видяхте този пример в последния урок. Тук няма толкова големи промени, освен че този път вместо да дефинираме VARRAY вътре в блока, го създадохме като самостоятелен обект на база данни. Предлагам ви да разгледате последния урок, където обясних подробно горния код.

Това е урокът за PL/SQL как да създадете VARRAY като обект на база данни в Oracle. Надяваме се, че ви е харесало да четете, ако е така, тогава не забравяйте да споделите този блог в социалните си мрежи с приятелите си. Благодаря и приятен ден!


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Защо времето за изпълнение на съхранената процедура на Oracle се увеличава значително в зависимост от това как се изпълнява?

  2. Конфигуриране на репликация на хетерогенна база данни – SQL Server към Oracle

  3. Oracle PL/SQL получава IP на сървъра v4?

  4. Стъпка по стъпка процес на надграждане до R12.2 Надстройка част -3

  5. Как да издигна изключение в PL/SQL?