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 TYPEIS 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:
DECLARETYPEIS 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.