Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Tipo de tabela no exemplo Oracle PL SQL


Os tipos de tabela PL SQL são na verdade coleções, como uma matriz. Com a ajuda de coleções PL SQL, você pode processar dados em massa com eficiência. Neste post, ensinarei comandos muito básicos e usados ​​com mais frequência para coleções de tipo de tabela PL SQL. Abaixo está o tipo de tabela no exemplo Oracle PL SQL.

Primeiro você precisa declará-lo na seção declare do bloco PL SQL. Aqui está a sintaxe com exemplo:

Tipo de tabela no exemplo Oracle PL SQL

1. Declare tipos de tabela PL SQL

Type any_table_type is table of emp%rowtype index by binary_integer;
emp_rec any_table_type;

Os comandos acima declararão o tipo de tabela any_table_type do tipo de linha da tabela emp e inicializarão com emp_rec. Após a declaração, você pode atribuir manualmente os valores a ela. Abaixo segue o exemplo:

2. Atribuir valores aos tipos de tabela 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;

Como as tabelas PL SQL são semelhantes a matrizes, os valores devem ser atribuídos fornecendo o número do elemento da matriz, conforme mostrado acima. Agora, abaixo está o exemplo de como Excluir das coleções de tipo de tabela PL SQL.

3. Excluindo elementos de tipos de tabela 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;

O exemplo acima excluirá o primeiro elemento e imprimirá apenas o segundo. Quando você executar o bloco acima, a saída será:

xyz
Procedimento PL/SQL concluído com sucesso.

Para excluir todos os elementos do tipo de tabela PL SQL, segue o exemplo:
emp_rec.delete;

4. Preenchendo tipos de tabela PL SQL usando coleta em massa


Abaixo está o tipo de tabela no exemplo oracle PL SQL para buscar os dados da tabela emp e, em seguida, preencherá o tipo de tabela PL SQL usando o Bulk Collect e atualizará a tabela emp usando FORALL. Aqui está o exemplo:
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;

Você também pode verificar minha Ferramenta de Procedimento PL SQL para gerar o script para seu desenvolvimento.