Tipo de registros Oracle PL / SQL con ejemplos

Tabla de contenido

¿Qué es el tipo de registro?

Un tipo de registro es un tipo de datos complejo que permite al programador crear un nuevo tipo de datos con la estructura de columna deseada.

  • Agrupa una o más columnas para formar un nuevo tipo de datos
  • Estas columnas tendrán su propio nombre y tipo de datos.
  • Un tipo de registro puede aceptar los datos
    • Como un solo registro que consta de muchas columnas O
    • Puede aceptar el valor de una columna en particular de un registro.
  • El tipo de registro simplemente significa un nuevo tipo de datos. Una vez creado el tipo de registro, se almacenará como un nuevo tipo de datos en la base de datos y el mismo se utilizará para declarar una variable en los programas.
  • Utilizará la palabra clave 'TYPE' para indicar al compilador que está creando el nuevo tipo de datos.
  • Se puede crear a " nivel de base de datos" que se puede almacenar como objetos de base de datos, utilizar en toda la base de datos o se puede crear en los " niveles de subprograma" , que es visible sólo dentro de los subprogramas.
  • El tipo de registro de nivel de base de datos también se puede declarar para las columnas de la tabla, de modo que una sola columna pueda contener los datos complejos.
  • Se puede acceder a los datos de este tipo de datos haciendo referencia a su nombre_variable seguido del operador de punto (.) Seguido de nombre_columna, es decir, '. '

Sintaxis para declaración a nivel de base de datos:

CREATE TYPE  IS RECORD( ,);

En la primera sintaxis, podemos ver la palabra clave 'CREATE TYPE', esto indica al compilador que cree el tipo de registro llamado "type_name_db" con la columna especificada como un objeto de base de datos.

Esto se da como una declaración individual y no dentro de ningún bloque.

Sintaxis para la declaración a nivel de subprograma:

DECLARETYPE  IS RECORD( ,);BEGIN;END;

En la sintaxis, estamos creando el tipo de registro llamado "type_name" solo dentro del subprograma.

En ambos métodos de declaración, la forma de definir la columna y el tipo de datos es similar.

Ejemplo 1: Tipo de REGISTRO como objeto de base de datos

En este programa, veremos cómo crear un "Tipo de registro" como un objeto de base de datos. Vamos a crear el tipo de registro 'emp_det' con cuatro columnas. Las columnas y su tipo de datos son los siguientes:

  • EMP_NO (NUMBER)
  • EMP_NAME (VARCHAR2 (150))
  • GERENTE (NÚMERO)
  • SALARIO (NÚMERO)
CREATE TYPE emp_det IS OBJECT(EMP_NO NUMBER,EMP_NAME VARCHAR2(150),MANAGER NUMBER,SALARY NUMBER);/
Producción:
Type created

Explicación del código:

  • El código anterior creará el tipo emp_det como un objeto de base de datos.
  • Tendrá 4 columnas emp_no, emp_name, gerente y salario como se define.
  • Ahora 'emp_det' es similar a otro tipo de datos (como NUMBER, VARCHAR @, etc.) y es visible en toda la base de datos. Por lo tanto, esto se puede utilizar en toda la base de datos para declarar la variable de este tipo.

Producción:

Creó el tipo 'emp_det' como tipo de registro a nivel de base de datos.

Ejemplo 2: Tipo de registro a nivel de subprograma: acceso a nivel de columna

En este ejemplo, veremos cómo crear un tipo de registro a nivel de subprograma y cómo completar y obtener los valores de él por nivel de columna.

Vamos a crear "emp_det" record_type a nivel de subprograma, y ​​lo usaremos para completar y mostrar datos de él.

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;/

Producción:

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

Explicación del código:

  • Línea de código 2-8 : El tipo de registro 'emp_det' se declara con las columnas emp_no, emp_name, salario y administrador del tipo de datos NUMBER, VARCHAR2, NUMBER, NUMBER.
  • Línea de código 9: la variable guru99_emp_rec se declara como tipo de datos 'emp_det'. Ahora, esta variable puede contener el valor que contiene los 4 campos / columnas anteriores.
  • Línea de código 11: rellenando el campo 'emp_no' de 'guru99_emp_rec' con el valor 1001.
  • Línea de código 12: rellenando el campo 'emp_name' de 'guru99_emp_rec' con el valor XXX.
  • Línea de código 13: rellenando el campo 'administrador' de 'guru99_emp_rec' con el valor 1000.
  • Línea de código 14: rellenando el campo 'salario' de 'guru99_emp_rec' con el valor 10000.
  • Línea de código 15-19: Visualización del valor de 'guru99_emp_rec' en la salida.

Ejemplo 3: Tipo de registro en el nivel de subprograma: acceso a nivel de fila

En este ejemplo, veremos cómo crear un tipo de registro a nivel de subprograma y cómo completarlo como nivel de fila. Vamos a crear "emp_det" record_type a nivel de subprograma, y ​​lo usaremos para completar y mostrar datos de él.

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;/

Explicación del código:

  • Línea de código 2-8 : El tipo de registro 'emp_det' se declara con las columnas emp_no, emp_name, salario y administrador del tipo de datos NUMBER, VARCHAR2, NUMBER, NUMBER.
  • Línea de código 9: la variable guru99_emp_rec se declara como tipo de datos 'emp_det'. Ahora, esta variable puede contener el valor que contiene los 4 campos / columnas anteriores.
  • Línea de código 11: rellenar la tabla emp con los datos 1002 como emp_no, YYY como emp_name, 15000 como salario y 1000 como número de gerente.
  • Línea de código 12: Confirmación de la transacción de inserción anterior.
  • Línea de código 13: rellenando la variable 'guru99_emp_rec' como datos de nivel de fila de la consulta de selección para el número de empleado 1002.
  • Línea de código 15-19: Visualización del valor de 'guru99_emp_rec' en la salida.

Producción:

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

Nota: Se puede acceder al tipo de registro solo en el nivel de columna mientras se redirige su valor a cualquier modo de salida.

Articulos interesantes...