Teste dos Métodos do PL/SQL Table


Publicado em 07/10/2001

O PL/SQL Table nada mais é do que um vetor de elementos, que podem ser
escalares (data, número, string) ou compostos (tipo record).
Entretanto o que muita gente não sabe é que no Oracle8 foram introduzidos
novos métodos ao PL/SQL Table que são bem úteis.
No exemplo abaixo eu ilustro o funcionamento da maioria deles.
Conecte-se no SQL*Plus com qualquer usuário e roda a seguinte rotina:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
--
-- Teste dos Métodos do PL/SQL Table
--
-- Fernando Boaglio - 24/09/98
--
--
DECLARE
-- Declaração
TYPE dept_table_type IS TABLE OF number(5);
--    INDEX BY BINARY_INTEGER;  compatibilidade com o PL/SQL 2 (Oracle7)
dept_table dept_table_type:=dept_table_type();  -- já inicializa com NULL
begin
dbms_output.enable;
-- Inicialização
dbms_output.put_line('Variável tipo Table PL/SQL 8:');
dbms_output.put_line('*****************************');
dbms_output.new_line;
dbms_output.put_line('Alocando 10 espaços nulos...');
-- EXTEND
dept_table.extend(10);
-- Atribuição
dbms_output.put_line('Inicializando as variáveis...');
FOR i IN 1..10 loop
IF mod(i,2)=1 then dept_table(i):=i*10;
end IF;
end loop;
-- Mostra o conteúdo
FOR i IN 1..16 loop
IF dept_table.EXISTS(i)
then dbms_output.put_line(' Posição '||to_char(i)||' declarada contendo '||nvl(to_char(dept_table(i)),'NULL') );
else dbms_output.put_line(' Posição '||to_char(i)||' não declarada');
end IF;
end loop;
-- COUNT
dbms_output.put_line('A variável Table tem '||to_char(dept_table.count)||' elementos.');
-- FIRST
dbms_output.put_line('A posição do primeiro é :'||to_char(dept_table.first)||'.');
-- LAST
dbms_output.put_line('A posição do último é :'||to_char(dept_table.last)||'.');
-- PRIOR
dbms_output.put_line('A posição que precede a 3 é :'||to_char(dept_table.prior(3))||'.');
-- NEXT
dbms_output.put_line('A posição depois do 3 é :'||to_char(dept_table.next(3))||'.');
-- EXTEND
dbms_output.put_line('Alocando mais 5 espaços como cópia da posição 3');
dept_table.extend(5,3);
FOR i IN 1..16 loop
IF dept_table.EXISTS(i)
then dbms_output.put_line(' Posição '||to_char(i)||' declarada contendo '||nvl(to_char(dept_table(i)),'NULL') );
else dbms_output.put_line(' Posição '||to_char(i)||' não declarada');
end IF;
end loop;
dbms_output.put_line('A variável Table tem '||to_char(dept_table.count)||' elementos.');
-- TRIM
dbms_output.put_line('Removendo o último campo...');
dept_table.trim;
FOR i IN 1..16 loop
IF dept_table.EXISTS(i)
then dbms_output.put_line(' Posição '||to_char(i)||' declarada contendo '||nvl(to_char(dept_table(i)),'NULL') );
else dbms_output.put_line(' Posição '||to_char(i)||' não declarada');
end IF;
end loop;
-- DELETE
dbms_output.put_line('Removendo o primeiro campo...');
dept_table.DELETE(1);
FOR i IN 1..16 loop
IF dept_table.EXISTS(i)
then dbms_output.put_line(' Posição '||to_char(i)||' declarada contendo '||nvl(to_char(dept_table(i)),'NULL') );
else dbms_output.put_line(' Posição '||to_char(i)||' não declarada');
end IF;
end loop;
end;
/
1
 


1
<a href="http://otn.oracle.com">http://otn.oracle.com </a>

2 Responses to “Teste dos Métodos do PL/SQL Table”

  1. wemerson santos Says:

    óla quero saber ,como surgio . progamação PL SQL como inventarão , honde surgio, quem inventou,,, me ajudem por favor!!

    obrigado por tudo !

  2. Fernando Boaglio Says:

    http://en.wikipedia.org/wiki/PLSQL

Leave a Reply