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

Cómo crear una variable de tipo de datos de registro definida por el usuario en la base de datos Oracle

Hasta ahora hemos visto cómo crear variables de tipo de datos de registro basadas en tablas y basadas en cursores. El que queda es el tipo de datos de registro definido por el usuario que vamos a cubrir en el tutorial de hoy.

Como sugiere el nombre, los registros definidos por el usuario son las variables de registro cuya estructura define el usuario, a diferencia de los registros basados ​​en tablas o basados ​​en cursores, cuyas estructuras se derivan de sus respectivas tablas o cursores. Esto significa que con los registros definidos por el usuario puede tener un control completo sobre la estructura de su variable de registro.

El proceso de creación de la variable de registro definida por el usuario se divide en dos partes. Antes de definir el registro, primero debemos definir el TIPO para la variable de registro. Este TIPO se convertirá en la base de la variable Registro definido por el usuario y ayudará a impulsar su estructura. Una vez que el TIPO se declara con éxito, podemos usarlo para crear nuestra variable de registro definida por el usuario.

Sintaxis de registros definidos por el usuario en Oracle Database

A continuación se muestra la sintaxis para crear el TIPO para la variable de tipo de datos de registro definido por el usuario.

TYPE type_name IS RECORD (
field_name1 datatype 1,
field_name2 datatype 2,
...
field_nameN datatype N 
);

Una vez que hayamos declarado nuestro TIPO, estamos listos para crear nuestra variable de registro. Esta variable adquirirá entonces todas las propiedades del tipo con el que se crea. Y aquí está la sintaxis para crear la variable de tipo de datos de registro definida por el usuario.

record_name TYPE_NAME;

¿Notó que, a diferencia de la variable de registro basada en tabla o basada en cursor, no tenemos que usar el atributo %ROWTYPE aquí para declarar la variable de registro?

Puede ver el videotutorial en mi canal de YouTube para obtener una explicación detallada de la sintaxis anterior.

Ejemplo:Cómo crear una variable de tipo de datos de registro definida por el usuario.

Paso 1:Declarar tipo para la variable de registro definida por el usuario

SET SERVEROUTPUT ON;
DECLARE
  TYPE rv_dept IS RECORD(
    f_name  VARCHAR2(20),
    d_name  DEPARTMENTS.department_name%TYPE 
  );

Paso 2:Declarar variable de registro definida por el usuario

Después de crear el TIPO, ya está todo listo para crear su variable de registro definida por el usuario.

var1 rv_dept;

Esta instrucción PL/SQL anterior creará una variable de registro con el nombre VAR1.

Paso 3:inicialice la variable de registro definida por el usuario.

La variable de registro definida por el usuario se puede inicializar de varias maneras. Por ejemplo, puede inicializar la variable de registro directamente asignándole un valor utilizando la variable de asignación o puede obtener los valores almacenados en la columna de una tabla utilizando la instrucción SELECT-INTO. Entonces, avancemos con nuestro ejemplo y aprendamos cómo inicializar una variable de registro definida por el usuario usando la instrucción SELECT-INTO.

A continuación escribiré la sección de ejecución. En la sección de ejecución, tendremos una declaración SELECT que unirá la tabla de empleados y la tabla de departamentos y devolverá el nombre y el nombre del departamento del empleado 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;

La declaración de selección que tenemos aquí devolverá el nombre y el nombre del departamento del empleado cuya identificación de empleado es 100. Los datos para ambas columnas provienen de tablas diferentes, por lo que usamos un JOIN aquí. Como hay dos tablas diferentes involucradas en la consulta, en tal situación, el uso de la variable de registro basada en tablas no es posible, por lo tanto, la solución viable es la variable de registro definida por el usuario.

Unamos todos los fragmentos de códigos anteriores en un único bloque 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;
/

Así es como creamos una variable de tipo de datos de registro definida por el usuario en la base de datos Oracle. Espero que hayas disfrutado leyendo y aprendido algo nuevo. También estoy regalando la mercancía de RebellionRider a un ganador seleccionado al azar cada mes, así que asegúrate de compartir este blog con tus amigos en tus redes sociales.

¡Eso es todo amigos, gracias y que tengan un gran día!