sql >> Base de Datos >  >> RDS >> Oracle

¿Qué son los registros PLSQL en Oracle?

Registros Oracle PLSQL

  • Los registros PLSQL son tipos de datos compuestos. Es un grupo de elementos de datos relacionados como campos, cada uno con su propio nombre y tipo de datos.
  • Los registros PL/SQL tienen una estructura similar a una fila en una tabla de base de datos. Cada tipo de datos escalares en el registro contiene un valor.
  • Un registro consta de componentes de cualquier escalar, registro PL/SQL o tipo de tabla PL/SQL.
  • Se pueden manipular como una sola unidad. Los registros pueden tener tantos campos como sea necesario.

Cómo declarar los registros Oracle PLSQL

( A) Registro PLSQL definido por el usuario

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) No hay tipos de datos predefinidos para Record como los hay para el tipo de datos escalar. Por lo tanto, debe crear primero y luego asignar

(2) Cada campo en el registro tiene un nombre único y un tipo de datos específico

(3) %TIPO se utiliza para declarar una variable que es del mismo tipo que la columna de una tabla específica.

(4) usamos el TIPO. . . La instrucción RECORD para crear su propio tipo de registro es cuando un campo de su registro debe ser de un tipo específico de PL/SQL, como BOOLEAN. Si usa %ROWTYPE, los tipos de datos de todos los campos estarán restringidos a tipos SQL

(5) Los registros son, en sí mismos, tipos de datos específicos de PL/SQL, por lo que otra característica interesante de los tipos de registro definidos por el usuario es que puede definir un tipo de registro como un campo en otro 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) También podemos definir el registrar como tipo de fila de tabla

DECLARAR sales_data_rec apps.sales_data%ROWTYPE;

1) Esto nos permite declarar un registro basado en la colección de la columna en la tabla o vista

2) Usamos el prefijo %ROWTYPE con la tabla de la base de datos para declararlo

3) Los campos del registro toman su nombre y tipo de datos de la columna de la tabla

C) También podemos usar %ROWTYPE para declarar un registro que tiene la misma estructura que una instrucción SELECT en un cursor.

Esto es especialmente útil para obtener un subconjunto de columnas de una tabla o columnas de varias tablas.

DECLARE 
 CURSOR emp_cur
 IS
 SELECT lastname, age,firstname FROM employees;
 l_employee   emp_cur%ROWTYPE;

Cada vez que obtenga datos de un cursor en variables PL/SQL, debe declarar un registro basado en ese cursor con %ROWTYPE y obtenerlo en ese registro. De esta manera, cuando y si la lista SELECCIONAR del cursor cambia, el número y el tipo de campos en el registro cambiarán en consecuencia y todo permanecerá sincronizado.

Cómo pasar valores a registros Oracle PLSQL

Sintaxis Uso
nombre_rec.nombre_col :=valor; Para asignar directamente un valor a una columna específica de un registro.
nombre_rec.nombre_columna :=valor; Para asignar directamente un valor a una columna específica de un registro, si el registro se declara usando %ROWTYPE.
SELECCIONE columna1, columna2 EN rec_name.col_name1, rec_name.col_name2 DESDE table_name [cláusula WHERE]; Para asignar valores a cada campo de un registro de la tabla de la base de datos.
SELECT * INTO record_name FROM table_name [cláusula WHERE]; Para asignar un valor a todos los campos en el registro de una tabla de base de datos.
nombre_variable :=nombre_registro.nombre_col; Para obtener un valor de una columna de registro y asignarlo a una variable.

Debes leer estas  otras publicaciones de PLSQL

Estructura y tipos de bloques de Oracle PLSQL
Preguntas de la entrevista de Oracle plsql
Tutoriales rápidos de Oracle sql y plsql