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

Изявление FORALL с долна и горна граница в базата данни на Oracle

Изявление FORALL с клауза за долна и горна граница

В предишния урок научихме, че има три обвързани клаузи, които можем да използваме с израза FORALL, за да оптимизираме DML заявките. От тези три обвързани клаузи ще разгледаме първата, т.е. долна и горна граница в този урок.

Какво представлява клаузата за долна и горна граница на оператора FORALL?

Както подсказва името, с клаузата за долна и горна граница трябва да посочим валидния диапазон от последователни индексни номера на колекцията.

Има ли някакво правило за използване на клауза за долна и горна граница с израза FORALL?

Клаузата за долна и горна граница може да се използва само когато колекцията, която препращате във вашето DML изявление, е Плътна . Ако референтната колекция е рядка, тогава може да искате да използвате други обвързани клаузи, които ще обсъдим в бъдещите уроци.

За да изпълните програмата си успешно, трябва да се уверите, че сте следвали всички правила на оператора FORALL заедно с гореспоменатото правило на клаузата за долна и горна граница. Научете повече за изявлението FORALL тук.

Нека направим пример за оператор FORALL с клауза за долна и горна граница в Oracle Database.

Но преди да преминем към примера, трябва да разберем едно нещо; Изразът FORALL изпълнява същата работа като клаузата за групово събиране, но по обратен начин. Например с групово събиране извличахме данните от таблиците и ги съхранявахме в колекцията, но сега с оператор FORALL ще извличаме данните от колекцията и ще ги съхраняваме в таблицата.

В тази демонстрация ще направим три неща, за да разберем концепцията на оператора FORALL с клауза за долна и горна граница. Тези три неща са:

  1. Създайте таблица.

Първо ще създадем таблица. Ще използваме тази таблица, за да изхвърлим данните, които ще извлечем от колекцията.

  1. Създайте и попълнете колекцията.

Тази стъпка е по избор, ако вече имате колекция с някои данни. Ако не, последвайте ме. За демонстрацията ще създам и попълня колекция.

  1. Напишете изявлението FORALL.

След като подготвите вашата маса и колекция, напишете изявлението FORALL. За демонстрацията ще напиша оператор FORALL, който ще извлече данните от колекцията и ще ги съхрани в таблицата. Това също ще бъде демонстрация на оператор FORALL с INSERT DML.

Нека направим примера на PL/SQL оператор FORALL с долна и горна граница.

SET SERVEROUTPUT ON;
CREATE TABLE tut_77 (
    Mul_tab    NUMBER(5)
);

Това ще бъде нашата таблица, която ще съдържа данните. След това ще напишем PL/SQL блока.

DECLARE
	-- Declare the collection
    TYPE My_Array IS TABLE OF NUMBER INDEX BY PLS_INTEGER;
    col_var My_Array;
	--Declare a variable for holding the total number of records of the table
    tot_rec NUMBER;
BEGIN
    --Populate the collection
    FOR i IN 1..10 LOOP
        col_var (i) := 9*i;
    END LOOP;
    -- Write the FORALL statement.
    FORALL idx IN 1..10
        INSERT INTO tut_77 (mul_tab)
        VALUES (col_var (idx));
    --Get the total number of records from the table     
    SELECT count (*) INTO tot_rec FROM tut_77;
    DBMS_OUTPUT.PUT_LINE ('Total records inserted are '||tot_rec);
END;
/

Обяснение на раздела за декларация

В секцията декларация от този код сме декларирали асоциативен масив с името “my_Array” заедно с неговата колекция. Също така допълнителна променлива с името tot_rec на Number datatype. Тази променлива ще съдържа общия брой записи, съхранени в нашата таблица.

В раздела за изпълнение сме направили три задачи. Първо, използвайки цикъла FOR, попълнихме нашата колекция с таблицата за умножение от 9. Второ, използвайки оператора FORALL, взехме данните от колекцията и ги съхранихме в таблицата, която създадохме. На трето място, използвайки променливата tot_rec с оператор SELECT-INTO, ние показахме обратно общия брой редове, съхранени в таблицата.

Направих и видеоклип по същата тема, където обясних този по-горе код ред по ред подробно. Предлагам ви да го проверите.

Това е урокът за PL/SQL FORALL израз с клауза Lower &Upper Bound в Oracle Database. Надявам се да сте се насладили на гледане. Моля, не забравяйте да харесате и споделите този блог с приятелите си във вашите социални медии. Можете да се свържете с мен и на моята 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. свържете чрез клауза в regex_substr

  3. Опция за доставка при подаване на едновременна заявка в R12.1.3

  4. Редовен израз (RegEx) за IPv6 Отделно от IPv4

  5. Заявката за изтриване на oracle отнема твърде много време