Tipo de registros Oracle PL / SQL com exemplos

Índice:

Anonim

O que é tipo de registro?

Um tipo de registro é um tipo de dados complexo que permite ao programador criar um novo tipo de dados com a estrutura de coluna desejada.

  • Ele agrupa uma ou mais colunas para formar um novo tipo de dados
  • Essas colunas terão seu próprio nome e tipo de dados
  • Um tipo de registro pode aceitar os dados
    • Como um único registro que consiste em muitas colunas OU
    • Ele pode aceitar o valor de uma coluna específica de um registro
  • Tipo de registro significa simplesmente um novo tipo de dados. Uma vez criado o tipo de registro, ele será armazenado como um novo tipo de dado no banco de dados e o mesmo deverá ser utilizado para declarar uma variável nos programas.
  • Ele usará a palavra-chave 'TYPE' para instruir o compilador de que está criando o novo tipo de dados.
  • Ele pode ser criado em " nível de banco de dados", que pode ser armazenado como objetos de banco de dados, usado em todo o banco de dados ou pode ser criado em " níveis de subprogramas" , que é visível apenas dentro dos subprogramas.
  • O tipo de registro de nível de banco de dados também pode ser declarado para as colunas da tabela, de forma que uma única coluna possa conter os dados complexos.
  • Os dados neste tipo de dados podem ser acessados ​​referindo-se ao seu variable_name seguido pelo operador de período (.) Seguido por column_name, ou seja, '. '

Sintaxe para declaração no nível do banco de dados:

CREATE TYPE  IS RECORD( ,);

Na primeira sintaxe, podemos ver a palavra-chave 'CREATE TYPE' que instrui o compilador a criar o tipo de registro denominado "type_name_db" com a coluna especificada como um objeto de banco de dados.

Isso é fornecido como uma declaração individual e não dentro de nenhum bloco.

Sintaxe para declaração em nível de subprograma:

DECLARETYPE  IS RECORD( ,);BEGIN;END;

Na sintaxe, estamos criando o tipo de registro denominado "type_name" apenas dentro do subprograma.

Em ambos os métodos de declaração, a forma de definir a coluna e o tipo de dados é semelhante.

Exemplo 1: Tipo RECORD como objeto de banco de dados

Neste programa, veremos como criar "Tipo de registro" como um objeto de banco de dados. Vamos criar o tipo de registro 'emp_det' com quatro colunas. As colunas e seus tipos de dados são os seguintes:

  • EMP_NO (NUMBER)
  • EMP_NAME (VARCHAR2 (150))
  • GERENTE (NÚMERO)
  • SALÁRIO (NÚMERO)
CREATE TYPE emp_det IS OBJECT(EMP_NO NUMBER,EMP_NAME VARCHAR2(150),MANAGER NUMBER,SALARY NUMBER);/
Resultado:
Type created

Explicação do código:

  • O código acima criará o tipo emp_det como um objeto de banco de dados.
  • Terá 4 colunas emp_no, emp_name, gerente e salário conforme definido.
  • Agora 'emp_det' é semelhante a outro tipo de dados (como NUMBER, VARCHAR @, etc.) E é visível em todo o banco de dados. Portanto, isso pode ser usado em todo o banco de dados para declarar a variável desse tipo.

Resultado:

Criado o tipo 'emp_det' como tipo de registro no nível do banco de dados.

Exemplo 2: Tipo de registro em nível de subprograma - acesso em nível de coluna

Neste exemplo, veremos como criar um tipo de registro no nível de subprograma e como preencher e buscar os valores dele por nível de coluna.

Vamos criar 'emp_det' record_type no nível do subprograma e usar o mesmo para preencher e exibir dados a partir dele.

DECLARETYPE emp_det IS RECORD(EMP_NO NUMBER,EMP_NAME VARCHAR2(150),MANAGER NUMBER,SALARY NUMBER);guru99_emp_rec emp_det;BEGINguru99_emp_rec.emp_no:= 1001;guru99_emp_rec.emp_name:=:'XXX';guru99_emp_rec.manager:= 1000;guru99_emp_rec.salary:=10000;dbms_output.put.line('Employee Detail');dbms_output.put_line ('Employee Number: '||guru99_emp_rec.emp_no);dbms_output.put_line ('Employee Name: '||guru99_emp_rec.emp_name);dbms_output.put_line ('Employee Salary: ' ||guru99_emp_rec.salary);dbms_output.put_line ('Employee Manager Number: '||guru99_emp_rec.manager);END;/

Resultado:

Employee DetailEmployee Number: 1001Employee Name: XXXEmployee Salary: 10000Employee Manager Number: 1000

Explicação do código:

  • Linha de código 2-8 : O tipo de registro 'emp_det' é declarado com as colunas emp_no, emp_name, salário e gerenciador de tipo de dados NUMBER, VARCHAR2, NUMBER, NUMBER.
  • Linha de código 9: a variável guru99_emp_rec é declarada como tipo de dados 'emp_det'. Agora, essa variável pode conter o valor que contém todos os 4 campos / colunas acima.
  • Linha de código 11: Preenchendo o campo 'emp_no' de 'guru99_emp_rec' com valor 1001.
  • Linha de código 12: Preenchendo o campo 'emp_name' de 'guru99_emp_rec' com o valor XXX.
  • Linha de código 13: Preenchendo o campo 'manager' de 'guru99_emp_rec' com o valor 1000.
  • Linha de código 14: Preenchendo o campo 'salário' de 'guru99_emp_rec' com o valor 10000.
  • Linha de código 15-19: Exibindo o valor de 'guru99_emp_rec' na saída.

Exemplo 3: Tipo de registro em nível de subprograma - acesso em nível de linha

Neste exemplo, veremos como criar um tipo de registro no nível de subprograma e como preenchê-lo como um nível de linha. Vamos criar 'emp_det' record_type no nível do subprograma e usar o mesmo para preencher e exibir dados a partir dele.

DECLARETYPE emp_det IS RECORD(EMP_NO NUMBER,EMP_NAME YARCHAR2( 150),MANAGER NUMBER,SALARY NUMBER);guru99_emp_rec emp_det;BEGININSERT INTO emp (emp_no, emp_name, salary, manager) VALUES (1002,'YYY',15000,1000);COMMIT;SELECT emp_no, emp_name, salary, manager INTO guru99_emp_rec FROM emp WHERE emp_no=1002;dbms_output.put_line (‘Employee Detail’);dbms_output.put_line (‘Employee Number: '||guru99_emp_rec.emp_no);dbms_output.put_line (‘Employee Name: '||guru99_emp_rec.emp_name);dbms_output.put_line (‘Employee Salary: '||guru99_emp_rec. salary);dbms_output.put_line (‘Employee Manager Number: '||guru99_emp_rec.manager);END;/

Explicação do código:

  • Linha de código 2-8 : O tipo de registro 'emp_det' é declarado com as colunas emp_no, emp_name, salário e gerenciador de tipo de dados NUMBER, VARCHAR2, NUMBER, NUMBER.
  • Linha de código 9: a variável guru99_emp_rec é declarada como tipo de dados 'emp_det'. Agora, essa variável pode conter o valor que contém todos os 4 campos / colunas acima.
  • Linha de código 11: Preencher a tabela emp com os dados 1002 como emp_no, YYY como emp_name, 15000 como salário e 1000 como número do gerente.
  • Linha de código 12: Confirmando a transação de inserção acima.
  • Linha de código 13: Preenchendo a variável 'guru99_emp_rec' como dados de nível de linha da consulta de seleção para o funcionário número 1002.
  • Linha de código 15-19: Exibindo o valor de 'guru99_emp_rec' na saída.

Resultado:

Employee DetailEmployee Number: 1002Employee Name: YYYEmployee Salary: 1000Employee Manager Number: 15000

Nota: O tipo de registro pode ser acessado apenas no nível da coluna enquanto redireciona seu valor para qualquer modo de saída.