Describe the differences among records, tables, and tables of records

Neste post, um tópico da prova OCA PL/SQL, irei descrever as diferenças entre RECORD, tabelas e tabelas de RECORDS.

Primeira vamos falar sobre tabela, ou TABLE, que neste caso se refere a associative array. Associative Array é uma collection. No qual sempre possui duas variáveis. Uma é o index, que pode ser do tipo string ou PLS_INTEGER. A outra é a variável que esta sendo indexada, que pode ser de qualquer tipo. Este elemento é acessado especificado o index, da seguinte maneira.

DECLARE
  --criando o tipo de dado associative array
  TYPE ar_teste IS TABLE OF VARCHAR2(30) INDEX BY PLS_INTEGER;
  --criando a variável do tipo criado acima
  v_teste AR_TESTE;
BEGIN
  v_teste(1) := 'Teste'; --colocando um valor na variável indexado pelo valor 1
  v_teste(1); --acessando a variável indexada, retorna Teste
END;
/

Já o RECORD é bem similar a uma linha de uma tabela comum. Criamos utilizando um tipo RECORD, ou %TYPE em um RECORD já existente ou até mesmo um %ROWTYPE em uma tabela, view ou cursor.

DECLARE
  --criando um tipo RECORD
  TYPE rec_teste IS RECORD (
    a1 NUMBER,
    a2 VARCHAR2(30)
  );
  --criando a variável com o tipo criado acima
  v_teste REC_TESTE;
BEGIN
  v_teste.a1 := 1; --definindo um valor ao elemento a1
  v_teste.a2 := 'Tércio'; --definindo um valor ao elemento a2
  dbms_output.put_line(v_teste.a1); --acessando e retornando o elemento a1 do RECOD
END;
/

Para finalizar, um table of records, é quando juntamos as duas definições acima. Quando é criado um tipo RECORD e logo depois criamos um tipo Associative Array deste RECORD.

DECLARE
  --criando um tipo RECORD
  TYPE rec_teste IS RECORD (
    a1 NUMBER,
    a2 VARCHAR2(30)
  );
  --criando o tipo Associative Array
  TYPE ar_teste IS TABLE OF rec_teste INDEX BY PLS_INTEGER;
  --criando a variável com o tipo criado acima, table of records
  v_teste AR_TESTE;
BEGIN
  v_teste(1).a1 := 1; --definindo um valor ao elemento a1 do RECORD com index 1
  v_teste(1).a2 := 'Tércio1'; --definindo um valor ao elemento a2 do RECORD com index 1
  v_teste(2).a1 := 1; --definindo um valor ao elemento a1 do RECORD com index 2
  v_teste(2).a2 := 'Tércio2'; --definindo um valor ao elemento a2 do RECORD com index 2
  dbms_output.put_line(v_teste(1).a1); --acessando e retornando o elemento a1 do RECORD com index 1
  dbms_output.put_line(v_teste(2).a2); --acessando e retornando o elemento a2 do RECORD com index 2
END;
/
Anúncios

Meu nome é Tércio Costa, sou formado em Ciências da Computação pela UFPB, tenho a certificação Oracle SQL Expert e OCP PL/SQL, mantendo um blog reconhecido pela OTN(oraclepress.wordpress.com), no qual também publico artigos técnicos no portal OTN, no portal http://www.profissionaloracle.com.br/gpo e na revista SQL Magazine. Além de tudo isto sou um Oracle ACE Associate por estar sempre contribuindo para a comunidade com um bom nível de expertise.

Marcado com: , ,
Publicado em PL/SQL

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Google

Você está comentando utilizando sua conta Google. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s

Este site utiliza o Akismet para reduzir spam. Saiba como seus dados em comentários são processados.

Esse Blog é reconhecido pela
Certificações
Sou articulista

Clique para seguir este blog e receber notificações via email de novos posts.

Tércio Costa

Tércio Costa

Meu nome é Tércio Costa, sou formado em Ciências da Computação pela UFPB, tenho a certificação Oracle SQL Expert e OCP PL/SQL, mantendo um blog reconhecido pela OTN(oraclepress.wordpress.com), no qual também publico artigos técnicos no portal OTN, no portal http://www.profissionaloracle.com.br/gpo e na revista SQL Magazine. Além de tudo isto sou um Oracle ACE Associate por estar sempre contribuindo para a comunidade com um bom nível de expertise.

Links Pessoais

Serviços verificados

Visualizar Perfil Completo →

Total de Visualizações da Página
  • 138.077 Visualizações
%d blogueiros gostam disto: