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

Метод за събиране:LIMIT функция в базата данни на Oracle

Днешният урок за PL/SQL е свързан с LIMIT за метода на събиране. Вече видяхме 4 функции в тази серия от методи за събиране, които са – Брой, Съществува, Първа и Последна. Limit е петата функция, която ще изучаваме днес.

Какво е LIMIT за метода на събиране?

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

Какво връща методът за събиране LIMIT?

Методът за събиране LIMIT връща стойност от тип PLS_INTEGER?

Тази функция работи ли и с други две колекции, вложени таблици и асоциативен масив?

Методът за събиране LIMIT работи само с VARRAY. Ако се приложи към вложена таблица или асоциативен масив, тогава тази функция ще върне стойност NULL или No. Така че отговорът е, не, функцията за събиране LIMIT не работи с вложени таблици и асоциативни масиви.

Каква е спецификацията на функцията за събиране LIMIT?

Спецификацията на функцията за събиране LIMIT е:

FUNCTION LIMIT RETURN pls_integer;

Функцията за събиране LIMIT поражда ли изключение? Ако да, тогава кога?

Да, функцията LIMIT поражда изключение COLLECTION_IS_NULL, ако се приложи към неинициализирана вложена таблица или VARRAY.

Можете ли да ни покажете пример как да използваме функцията LIMIT?

Разбира се, защо не. Ето един много прост пример, демонстриращ как правилно да използвате функцията за събиране LIMIT с VARRAY.

SET SERVEROUTPUT ON;
DECLARE
    TYPE inBlock_vry IS VARRAY (5) OF NUMBER;
    vry_obj inBlock_vry := inBlock_vry();
BEGIN
 --Let's find out total number of indexes in the above VARRAY
    DBMS_OUTPUT.PUT_LINE ('Total Indexes '||vry_obj.LIMIT);
END;
/

Нямаме ли функцията COUNT, която дава същата информация?

Функцията за събиране LIMIT връща общия брой индекси на VARRAY независимо дали тези индекси са празни или съдържат някои данни . Той проверява дефиницията на VARRAY и вижда общия брой елементи, които е предназначен да съхранява, и връща този брой.

Докато функцията за събиране COUNT връща броя на индексите, които не са празни изадържане на някои данни .

Разгледайте тази PL/SQL програма. Това ще ви помогне да разберете по-ясно разликата между метода за събиране COUNT и LIMIT.

SET SERVEROUTPUT ON;
DECLARE
    --Create VARRAY of 5 element
    TYPE inblock_vry IS
        VARRAY ( 5 ) OF NUMBER;
    vry_obj   inblock_vry := inblock_vry ();
BEGIN
    --Insert into VARRAY
    	vry_obj.extend;
    	vry_obj(1) := 10 * 2; 
dbms_output.put_line('Total Number of Index ' || vry_obj.limit);
dbms_output.put_line('Total Number of Index which are occupied ' || vry_obj.count);
END;
/

В горния код имаме VARRAY, който е в състояние да съдържа 5 елемента от тип данни NUMBER. В секцията за изпълнение имаме два изходни оператора на СУБД. Първият изходен оператор, който показва резултата от функцията LIMIT, ще върне 5, защото това е общата сила на нашия VARRAY, докато вторият изходен оператор ще върне 1, защото сред тези 5 индекса има само един индекс, който има някои данни, съхранени в него.

Във видеоклипа казахте, че ще ни покажетекак да разберем общия брой елементи, останали неизползвани, за да съхраняваме данни в променлива, използвайки метода за събиране LIMIT?

Дали е така? Това казах ли? Просто се шегувам.

Намирането на броя на свободните индекси за вашата употреба в VARRAY е много лесно. Нека ви кажа как.

Както казах по-горе функцията за събиране COUNT връща броя на индексите, които имат съхранени данни в тях, а функцията за събиране LIMIT връща общия брой индекси, които VARRAY може да побере.

Ако извадите резултата от функцията count от резултата от функцията LIMIT, ще получите общия брой елементи, останали неизползвани, за да съхранявате данни в променлива. Например

DECLARE
    --Create VARRAY of 5 element
    TYPE inblock_vry IS
        VARRAY ( 5 ) OF NUMBER;
    vry_obj   inblock_vry := inblock_vry ();
BEGIN
    --Insert into VARRAY
    vry_obj.extend;
    vry_obj(1) := 10 * 2;
    dbms_output.put_line('Total Number of Index ' || vry_obj.limit);
    dbms_output.put_line('Total Number of Index which are occupied ' || vry_obj.count);
    dbms_output.put_line('Total Number of Vacant index left for use '
                            || (vry_obj.limit - vry_obj.count) );
END;
/

Това е урокът за PL/SQL, отговарящ на всички въпроси, които можете да очаквате в изпита за сертифициране, както и във вашето интервю относно метода за събиране LIMIT в базата данни на Oracle.

Има ли нещо, което съм пропуснал да покрия или спомена в този урок? Ако да, моля, позволете ми. Пишете ми в моя Twitter или Facebook.

Благодаря приятен ден.


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

  2. Някой знае ли каква техника за криптиране използва JDeveloper/SQL Developer за запазване на идентификационни данни?

  3. Как да създадете login.sql файл за SQLcl

  4. Изпращане на масив от стойности към процедурата на Oracle за използване в клаузата WHERE IN

  5. PL/SQL разпечатва референтния курсор, върнат от съхранена процедура