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

Метод за събиране:Процедура EXTEND в базата данни на Oracle

След PL/SQL Collection Method DELETE, процедурата EXTEND в базата данни на Oracle е втората в списъка. Използвахме тази процедура отново и отново, но така и не получихме възможността да я разгледаме подробно. Затова реших да посветя целия блог на този метод за събиране. Така че седнете и се насладете на блога.

Ако сте нов в PL/SQL и не знаете какво представляват процедурите, тогава имаме урок за вас. Щракнете тук и научете всичко за PL/SQL процедурите в Oracle Database.

Какво е PL/SQL Collection Method EXTEND?

Подобно на DELETE, методът за събиране EXTEND е претоварена PL/SQL процедура, която се използва за добавяне на елементи към колекцията.

По колко начина можем да извикаме процедура EXTEND в Oracle Database?

Процедурата за събиране на PL/SQL е претоварена процедура. Следователно това означава, че наричаме същата процедура по различни начини. Тези различни начини за извикване на процедура за събиране EXTEND са –

  1. Разширяване:Разширете извикването на процедура без никакъв аргумент.

Извикване на процедура за събиране на PL/SQL Extend без аргумент ще се добавя единичен NULL елемент към колекцията.

  1. Разширяване (n):Разширете извикването на процедура с един аргумент.

Процедура за събиране Extend с един аргумент ще добави броя NULL елементи, които споменахте като аргумент на процедурата . Но не забравяйте, че аргументът трябва да е валидна целочислена стойност.

  1. Разширяване (n, v):Разширете извикването на процедура с два аргумента.

В този случай първият аргумент показва броя на елементите които ще бъдат добавени към колекцията. Освен товат Вторият аргумент е индексният номер. Освен това стойността му ще бъде копирана и присвоена на всеки от новодобавените елементи на колекцията. Тази форма на EXTEND е необходима за колекции с „ненулеви елементи“.

Можем ли да използваме PL/SQL Collection Method EXTEND и с трите типа колекции?

Не, методът на колекция EXTEND може да се приложи само към колекция вложени таблици и VARRAY. Освен това EXTEND не може да се използва с колекция Асоциативни масиви.

Можете ли да ни покажете спецификацията на процедурата EXTEND на метода на събиране в Oracle Database?

Разбира се, защо не! Ето претоварените спецификации на PL/SQL Collection Method EXTEND —

EXTEND Процедура с един аргумент:

PROCEDURE EXTEND (n pls_integer := 1);

Метод за събиране EXTEND с два аргумента:

PROCEDURE EXTEND (n pls_integer, v pls_integer);

Кога трябва да използваме метода за събиране EXTEND в нашия код?

Когато имате колекция (вложена таблица или VARRAY) във вашия код, която не е инициализирана с достатъчен брой елементи. В този случай първо трябва да използвате PL/SQL Collection Method EXTEND.

Какво е изискването за PL/SQL колекция Method EXTEND?

Декларирането, дефинирането и инициализирането са трите стъпки, през които трябва да преминем, докато работим с колекция в Oracle Database. Но преди да съхраняваме данните в индекса, трябва да създадем слот за памет за тях. Следователно, процедурата за събиране на PL/SQL EXTEND ни помага да създадем този слот за памет за тези данни.

Ами ако сме изтрили или изрязали края на колекцията?

В този случай PL/SQL Collection методът EXTEND ще пропусне изтритите елементи, когато присвоява нов индекс.

Ами ако приложа метода за събиране EXTEND към неинициализирана вложена таблица или VARRAY?

Ако PL/SQL Collection Method EXTEND се приложи към неинициализирана колекция, тогава тя ще покаже COLLECTION_IS_NULL изключение.

А какво ще стане, ако се опитам да РАЗШИРЯ VARRAY над определената граница?

Ако методът за събиране EXTEND се използва с VARRAY, за да се разшири отвъд определеното му ограничение, тогава ще трябва да се сблъскате с друго изключение, което е SUBSCRIPT_BEYOND_LIMIT.

Хей, Маниш! Ще видим ли някога пример за този метод на събиране EXTEND?

Да, определено ще направим демонстрация на всяко от извикването на процедурата EXTEND на PL/SQL Collection, което споменахме по-горе. В допълнение към извикването на процедурата за разширяване с VARRAY.

1. Процедура за събиране на PL/SQL EXTEND без аргумент

SET SERVEROUTPUT ON;
DECLARE
    TYPE my_nestedTable IS TABLE OF number;
    nt_obj  my_nestedTable := my_nestedTable();
BEGIN
    nt_obj.EXTEND;
    nt_obj(1) := 10;
    DBMS_OUTPUT.PUT_LINE ('Data at index 1 is '||nt_obj(1));
END;
/

2. Процедура за събиране EXTEND с един аргумент.

SET SERVEROUTPUT ON;
DECLARE
    TYPE my_nestedTable IS TABLE OF number;
    nt_obj  my_nestedTable := my_nestedTable();
BEGIN
    nt_obj.EXTEND(3);
    nt_obj(1) := 10;
    nt_obj(2) := 20;
    nt_obj(3) := 30;
    DBMS_OUTPUT.PUT_LINE ('Data at index 1 is '||nt_obj(1));
    DBMS_OUTPUT.PUT_LINE ('Data at index 2 is '||nt_obj(2)); 
    DBMS_OUTPUT.PUT_LINE ('Data at index 3 is '||nt_obj(3));
END;
/

3. Процедура за събиране на PL/SQL EXTEND с два аргумента.

SET SERVEROUTPUT ON;
DECLARE
    TYPE my_nestedTable IS TABLE OF number;
    nt_obj  my_nestedTable := my_nestedTable();
BEGIN
    nt_obj.EXTEND;
    nt_obj(1) := 28;
    DBMS_OUTPUT.PUT_LINE ('Data at index 1 is '||nt_obj(1));
    nt_obj.EXTEND(5,1);
    DBMS_OUTPUT.PUT_LINE ('Data at index 4 is '||nt_obj(4));
END;
/

4. Процедура за събиране EXTEND (Без аргумент) с VARRAY

SET SERVEROUTPUT ON;
DECLARE
    TYPE my_Varray IS VARRAY (5) OF NUMBER;
    vry_obj my_Varray := my_Varray();
BEGIN
    vry_obj.EXTEND;
    vry_obj(1) := 10;
    DBMS_OUTPUT.PUT_LINE('Data at index 1 is '||vry_obj(1));
END;
/

Всеки LOC от всичко по-горе (освен 4-те) е обяснено подробно във видеоурока в нашия канал в YouTube.

Надяваме се, че сме обсъдили всички възможни въпроси относно PL/SQL Collection Method EXTEND, с които бихте могли да се сблъскате във вашия изпит за сертифициране на Oracle db, както и във вашето интервю. Освен това, ако имате някакви обърквания относно сертификатите, можете да се обърнете към нашето ръководство за сертифициране на Oracle Database.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да повишите производителността за групови INSERT към ODBC свързани таблици в Access?

  2. Как да конфигурирам Ruby on Rails с Oracle?

  3. Oracle PL/SQL:Пример за динамичен SQL с използване на Execute Immediate

  4. Как да накарам моето Java приложение да се идентифицира пред Oracle при свързване?

  5. Предайте и връщайте персонализиран обект на масив в ibatis и оракул в java