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

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

Споменах в предишния урок, че има 7 функции за събиране. Сред тези седем функции за събиране – COUNT ( ) е първата, която ще разгледаме в този урок. Ако следвате тази серия от PL/SQL колекция, тогава сигурно вече сте се сблъсквали с тази функция за събиране. Но от днес сме посветили цял блог на тази тема, така че ще си позволим да проучим метода за събиране COUNT ( ) подробно.

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

Методът за събиране COUNT ( ) връща броя на елементите в инициализирана колекция. Ако се използва с инициализираща колекция без елементи; връща нула.

Объркан! Защо обозначаваме функциите и процедурите за събиране като метод за събиране? Прочетете Въведение в колекцията Методи, за да разберете отговора.

Кога методът за събиране COUNT ( ) връща нула?

Методът за събиране COUNT ( ) връща нула, когато е приложен или, да речем, използван с инициализираща колекция (т.е. VARRAY и вложени таблици) без елементи. Също така връща нула като резултат, когато се използва с празен асоцииран масив.

Подпис на метода за събиране COUNT ( )?

Подписът на функцията COUNT е –

FUNCTION COUNT RETURN PLS_INTEGER;

Предложен четене:PL/SQL функции

Методът за събиране COUNT ( ) работи ли по същия начин с вложена таблица?

Не. Това е така, защото COUNT ( ), връща броя на непразните елементи във вложена таблица, тъй като е възможно вложена таблица на колекция да има отделни елементи, които са празни.

Защо, по дяволите, получавам грешка „Collection_IS_NULL“?

Изглежда, че използвате COUNT ( ) с неинициализирана колекция. Всеки път, когато приложите функцията за събиране COUNT ( ) към неинициализирана колекция (т.е. вложени таблици и VARRAY), тя повдига изключението „Collection_Is_Null“, което е предварително дефинирано изключение в Oracle Database.

Тъй като асоциативните масиви не изискват инициализация, по този начин няма да получите това изключение с тях. Можете да прочетете повече за асоциативните масиви тук.

Примери за метод за събиране COUNT ( )

Пример 1:Изчислете общия брой елементи, съхранени във вложена таблица.

Можете да използвате функцията COUNT ( ), за да изчислите общия брой елементи, съхранени в колекция, като например вложена таблица.

SET SERVEROUTPUT ON;
DECLARE
    TYPE my_nested_table IS TABLE OF number;
    var_nt my_nested_table := my_nested_table (9,18,27,36,45,54,63,72,81,90);
BEGIN
    DBMS_OUTPUT.PUT_LINE ('The Size of the Nested Table is ' ||var_nt.count);
END;
/

Продължавай; копирайте и поставете горния код във вашата IDE и вижте резултата.

Пример 2. Функция COUNT ( ) с условие IF

Можете да използвате функцията COUNT ( ), за да контролирате потока на програмата, като използвате условие. Така че нека напишем много проста програма, която ще демонстрира как да използваме метода на колекция COUNT ( ) с условие IF.

SET SERVEROUTPUT ON;
DECLARE
    TYPE my_nested_table IS TABLE OF number;
    var_nt my_nested_table := my_nested_table (9,18,27,36,45,54,63,72,81,90);
BEGIN
    IF var_nt.count >= 10 THEN
        DBMS_OUTPUT.PUT_LINE (‘you have already inserted 10 elements in your Nested table.');
        DBMS_OUTPUT.PUT_LINE ('Are you sure you want to insert more?');
    END IF;
END;
/

По същия начин можете да използвате метода за събиране COUNT ( ) с цикли. Можете да гледате урока за PL/SQL на същата тема, за да се научите да правите това. Можете да намерите видеото тук.

Това е много проста демонстрация. Сигурен съм, че можете да измислите някои по-луди примери. И така, какво чакате, напишете своя код и вижте по какви други възможни начини можете да използвате този метод.

Ако искате да прегледам кода ви, можете да споделите кода си с мен на страницата ми във Facebook или в моя Twitter.

Как ви харесва този блог? Има ли нещо, което искате да подобрим? Кажете ни какво чувствате на нашата страница във Facebook и в нашия Twitter.

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


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Когато извикам PreparedStatement.cancel() в JDBC приложение, наистина ли го убива в база данни на Oracle?

  2. ЗАРЕЖДАНЕ НА ДАННИ INFILE еквивалент в Oracle

  3. Обвързване на параметри на заявка по име с ODP.NET

  4. Как да изчисля размера на таблиците в Oracle

  5. Съберете статистически данни за схемата с помощта на FND_STATS в EBS 11i и R12