Типовете таблици PL SQL всъщност са колекции, като масив. С помощта на PL SQL колекциите можете ефективно да обработвате групови данни. В тази публикация ще ви науча на много основни и най-често използвани команди за PL SQL колекции тип таблици. По-долу е типът на таблицата в примера за Oracle PL SQL.
Първо трябва да го декларирате в секцията за деклариране на PL SQL блока. Ето синтаксиса с пример:
Тип таблица в пример за Oracle PL SQL
1. Декларирайте PL SQL типове таблици
Type any_table_type is table of emp%rowtype index by binary_integer; emp_rec any_table_type;
Горните команди ще декларират типа таблица any_table_type на emp тип ред на таблицата и след това ще инициализират с emp_rec. След деклариране можете ръчно да му присвоите стойностите. По-долу е примерът:
2. Присвояване на стойности на PL SQL типове таблици
set serveroutput on; declare Type any_table_type is table of emp%rowtype index by binary_integer; emp_rec any_table_type; begin emp_rec(1).ename := 'abc'; /* assigning values */ emp_rec(2).ename := 'xyz'; dbms_output.put_line(emp_rec(1).ename); /* accessing values */ dbms_output.put_line(emp_rec(2).ename); end;
Тъй като PL SQL таблиците са като масиви, така че стойностите трябва да бъдат присвоени, като се даде номер на елемента на масива, както е показано по-горе. Сега по-долу е примерът за това как да изтриете от PL SQL колекции тип таблици.
3. Изтриване на елементи от PL SQL типове таблици
set serveroutput on; declare Type any_table_type is table of emp%rowtype index by binary_integer; emp_rec any_table_type; begin emp_rec(1).ename := 'abc'; emp_rec(2).ename := 'xyz'; emp_rec.delete(1); /* will delete first element */ for i in emp_rec.first .. emp_rec.last loop /* loop through the array */ dbms_output.put_line(emp_rec(i).ename); end loop; end;
Горният пример ще изтрие първия елемент и ще отпечата само втория. Когато изпълните горния блок, изходът ще бъде:
xyz
PL/SQL процедурата е завършена успешно.
За да изтриете всички елементи от PL SQL тип таблица, по-долу е примерът:
emp_rec.delete;
4. Попълване на PL SQL типове таблици с помощта на групово събиране
По-долу е даден типът на таблицата в oracle PL SQL пример за извличане на данните от таблицата emp и след това тя ще попълни типа PL SQL таблица с помощта на Bulk Collect и след това ще актуализира таблицата emp с помощта на FORALL. Ето примера:
set serveroutput on; DECLARE CURSOR c IS SELECT * FROM emp; TYPE any_table_type IS TABLE OF emp%ROWTYPE INDEX BY BINARY_INTEGER; emp_rec any_table_type; BEGIN OPEN c; FETCH c BULK COLLECT INTO emp_rec; CLOSE c; FORALL i IN emp_rec.FIRST .. emp_rec.LAST UPDATE emp SET comm = emp_rec (i).sal * 10 / 100 WHERE empno = emp_rec (i).empno; COMMIT; END;
Можете също да проверите моя инструмент за PL SQL процедури, за да генерирате скрипта за вашата разработка.
-
Грешка при отпечатване на променлива REFCURSOR като OUT параметър в процедурата в Oracle 11g
-
Проблем с променливите за свързване на Oracle, които не използват правилно индекса
-
PL/SQL:Грешка PLS-00306:грешен номер или типове аргументи при извикване към задействани за таблица с числа
-
Най-добрият начин да изпълнявате периодично заявки на Oracle
-
как да използвам ограничението за проверка в oracle