Até agora, vimos como criar variáveis de tipo de dados de registro baseadas em tabela e em cursor. O que resta é o tipo de dados de registro definido pelo usuário que abordaremos no tutorial de hoje.
Como o nome sugere, os registros definidos pelo usuário são as variáveis de registro cuja estrutura é definida pelo usuário, o que é diferente dos registros baseados em tabela ou baseados em cursor cujas estruturas são derivadas de suas respectivas tabelas ou cursor. Isso significa que, com registros definidos pelo usuário, você pode ter controle total sobre a estrutura de sua variável de registro.
O processo de criação da variável de registro definida pelo usuário é dividido em duas partes. Antes de definir o registro, primeiro precisamos definir o TYPE para a variável de registro. Este TYPE se tornará a base da variável User Define Record e ajudará na condução de sua estrutura. Uma vez que o TYPE é declarado com sucesso, podemos usá-lo para criar nossa variável de registro definida pelo usuário.
Sintaxe de registros definidos pelo usuário no banco de dados Oracle
Abaixo está a sintaxe para criar o TYPE para a variável de tipo de dados de registro definido pelo usuário.
TYPE type_name IS RECORD ( field_name1 datatype 1, field_name2 datatype 2, ... field_nameN datatype N );
Uma vez que tenhamos nosso TYPE declarado, estamos prontos para criar nossa variável de registro. Esta variável irá então adquirir todas as propriedades do tipo com o qual foi criada. E aqui está a sintaxe para criar a variável de tipo de dados de registro definido pelo usuário.
record_name TYPE_NAME;
Você notou que, diferentemente da variável de registro baseada em tabela ou baseada em cursor, não precisamos usar o atributo %ROWTYPE aqui para declarar a variável de registro?
Você pode assistir ao tutorial em vídeo no meu canal do YouTube para obter uma explicação detalhada da sintaxe acima.
Exemplo:como criar uma variável de tipo de dados de registro definida pelo usuário.
Etapa 1:declarar o tipo para a variável de registro definida pelo usuário
SET SERVEROUTPUT ON; DECLARE TYPE rv_dept IS RECORD( f_name VARCHAR2(20), d_name DEPARTMENTS.department_name%TYPE );
Etapa 2:declarar a variável de registro definida pelo usuário
Depois de criar o TYPE, você está pronto para criar sua variável de registro definida pelo usuário.
var1 rv_dept;
Esta instrução PL/SQL acima criará uma variável de registro com o nome VAR1.
Etapa 3:inicialize a variável de registro definida pelo usuário.
A variável de registro definida pelo usuário pode ser inicializada de várias maneiras. Por exemplo, você pode inicializar a variável de registro diretamente atribuindo valor a ela usando a variável de atribuição ou pode buscar os valores armazenados na coluna de uma tabela usando a instrução SELECT-INTO. Então, vamos seguir em frente com nosso exemplo e aprender como inicializar uma variável de registro definida pelo usuário usando a instrução SELECT-INTO.
Em seguida, escreverei a seção de execução. Na seção de execução, teremos uma instrução SELECT que unirá a tabela de funcionários e a tabela de departamentos e retornará o primeiro nome e o nome do departamento do funcionário específico.
BEGIN SELECT first_name , department_name INTO var1.f_name, var1.d_name FROM employees join departments Using (department_id) WHERE employee_id = 100; DBMS_OUTPUT.PUT_LINE(var1.f_name||' '||var1.d_name); END;
A instrução select que temos aqui retornará o primeiro nome e o nome do departamento do funcionário cujo ID de funcionário é 100. Os dados para ambas as colunas são provenientes de tabelas diferentes, portanto, usamos um JOIN aqui. Como existem duas tabelas diferentes envolvidas na consulta, em tal situação, o uso da variável de registro baseada em tabela não é possível, portanto, a solução viável é a variável de registro definida pelo usuário.
Vamos juntar todos os pedaços de códigos acima em um único bloco PL/SQL anônimo.
SET SERVEROUTPUT ON; DECLARE TYPE rv_dept IS RECORD( f_name VARCHAR2(20), d_name departments.department_name%type ); var1 rv_dept; BEGIN SELECT first_name , department_name INTO var1.f_name, var1.d_name FROM employees join departments Using (department_id) WHERE employee_id = 100; DBMS_OUTPUT.PUT_LINE(var1.f_name||' '||var1.d_name); END; /
É assim que criamos uma variável de tipo de dados de registro definido pelo usuário no banco de dados Oracle. Espero que tenha gostado da leitura e aprendido algo novo. Além disso, estou distribuindo mercadorias da RebellionRider para um vencedor selecionado aleatoriamente todos os meses, portanto, compartilhe este blog com seus amigos em suas redes sociais.
Isso é tudo pessoal obrigado e tenham um ótimo dia!