Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

O que são registros PLSQL no Oracle

Registros Oracle PLSQL

  • Registros PLSQL são tipos de dados compostos. É um grupo de itens de dados relacionados como campos, cada um com seu próprio nome e tipo de dados.
  • Os registros PL/SQL são semelhantes em estrutura a uma linha em uma tabela de banco de dados. Cada tipo de dados escalar no registro contém um valor.
  • Um registro consiste em componentes de qualquer escalar, registro PL/SQL ou tipo de tabela PL/SQL.
  • Eles podem ser manipulados como uma única unidade. Os registros podem ter quantos campos forem necessários.

Como declarar os registros Oracle PLSQL


( A)Registro PLSQL definido pelo usuário
DECLARE TYPE employee_record_type IS RECORD 
 (emp_id NUMBER(10) NOT NULL,
 dept_no dept.deptno%TYPE,
 nаme varchar2(20),
 hire_dаte DATE := SYSDATE
 Last_name varchar2(20)
 );
 employee_record employee_record_type;

(1) Não há tipos de dados pré-definidos para Record como existem para o tipo de dados escalar. Então você precisa criar primeiro e depois atribuir

(2) Cada campo no registro tem um nome exclusivo e um tipo de dados específico

(3) %TYPE é usado para declarar uma variável que é do mesmo tipo que a coluna de uma tabela especificada.

(4) usamos o TIPO . . . A instrução RECORD para criar seu próprio tipo de registro é quando um campo do seu registro precisa ser um tipo específico de PL/SQL, como BOOLEAN. Se você usar %ROWTYPE, os tipos de dados de todos os campos serão restritos aos tipos SQL

(5) Os registros são, eles próprios, tipos de dados específicos de PL/SQL, portanto, outro recurso interessante dos tipos de registro definidos pelo usuário é que você pode definir um tipo de registro como um campo em outro tipo de registro
DECLARE 
 TYPE emp_phone IS RECORD
 (
 Stdcode      PLS_INTEGER,
 phn_number   PLS_INTEGER,
 extension    PLS_INTEGER
 );
 TYPE contact_phone IS RECORD
 (
 day_phone#    emp_phone,
 eve_phone#    emp_phone,
 cell_phone#   emp_phone
 );
 sales_rep contact_phone;

B) Também podemos definir o registro como tipo de linha de tabela
DECLARE sales_data_rec apps.sales_data%ROWTYPE;

1) Isso nos permite declarar um registro com base na coleção da coluna na tabela ou visão

2) Usamos o prefixo %ROWTYPE com a tabela do banco de dados para declará-lo

3) Os campos no registro levam seu nome e tipo de dados da coluna da tabela

C) Também podemos usar %ROWTYPE para declarar um registro que tenha a mesma estrutura de uma instrução SELECT em um cursor.

Isso é especialmente útil para buscar um subconjunto de colunas de uma tabela ou colunas de várias tabelas.
DECLARE 
 CURSOR emp_cur
 IS
 SELECT lastname, age,firstname FROM employees;
 l_employee   emp_cur%ROWTYPE;

Sempre que estiver buscando dados de um cursor para variáveis ​​PL/SQL, você deve declarar um registro baseado nesse cursor com %ROWTYPE e buscá-lo nesse registro. Desta forma, quando e se a lista SELECT do cursor mudar, o número e o tipo de campos no registro mudarão de acordo e tudo ficará em sincronia.

Como passar valores para registros Oracle PLSQL

Sintaxe Uso
rec_name.col_name :=valor; Para atribuir diretamente um valor a uma coluna específica de um registro.
rec_name.column_name :=valor; Para atribuir diretamente um valor a uma coluna específica de um registro, se o registro for declarado usando %ROWTYPE.
SELECT column1, column2 INTO rec_name.col_name1, rec_name.col_name2 FROM table_name [cláusula WHERE]; Para atribuir valores a cada campo de um registro da tabela do banco de dados.
SELECT * INTO record_name FROM table_name [cláusula WHERE]; Para atribuir um valor a todos os campos no registro de uma tabela de banco de dados.
variable_name :=record_name.col_name; Para obter um valor de uma coluna de registro e atribuí-lo a uma variável.

Você deve ler estas  outras postagens PLSQL

Estrutura e tipos de blocos Oracle PLSQL
Perguntas da entrevista sobre Oracle plsql
Tutoriais rápidos sobre Oracle sql e plsql