sql >> Base de Datos >  >> RDS >> Database

Cursores de referencia fuertes con tipo de datos de registro basado en tabla

Cursores de referencia fuerte con tipo de datos de registro basado en tabla

Como aprendimos en la introducción a los cursores de referencia, existen dos tipos de cursores de referencia PL/SQL en Oracle Database.

  1. Cursores de referencia fuertes y
  2. Cursores de referencia débiles

Exploraremos todos los conceptos de estos dos tipos de cursores de referencia en esta serie. Con este blog, comenzaremos con el primero que son los cursores de referencia fuertes con tipo de datos de registro basado en tablas y con tipo de datos de registro definido por el usuario.

¿Qué son los cursores de referencia fuerte PL/SQL en la base de datos Oracle?

Un cursor de referencia que tiene un tipo de retorno fijo se denomina Cursor de referencia fuerte en Oracle Database. Debido al tipo de retorno fijo, los cursores de referencia fuertes solo se pueden usar de forma selectiva. Por ejemplo, con esas declaraciones SELECT que devuelven el resultado cuyo tipo de datos coincide con el que ha fijado durante la declaración del cursor.

¿Podemos usar Strong Ref Cursor con cualquier instrucción SELECT en Oracle Database?

No, no podemos usar Strong Ref Cursors con ninguna instrucción SELECT. Esto se debe al 'Tipo de retorno' fijo.

No obstante, solo se puede usar con aquellas declaraciones SELECT que devuelvan el resultado cuyo tipo de datos coincida con la 'Cláusula de retorno' del cursor.

¿Podemos usar cualquier tipo de datos PL/SQL para declarar nuestro cursor de referencia fuerte?

No podemos. Además, el tipo de retorno de un cursor de referencia fuerte siempre debe ser un tipo de datos de registro. Puede ser un tipo de datos de registro basado en tabla o un tipo de datos de registro definido por el usuario.

Ejemplo de cursores de referencia fuertes con tipo de datos de registro basado en tabla

Escribamos un ejemplo. Aquí crearemos un cursor de referencia fuerte con tipo de datos de registro basado en tablas.

 SET SERVEROUTPUT ON
 DECLARE
    	/*Create Ref Pointer Type*/
	TYPE	my_RefCur	IS REF CURSOR RETURN 	employees%ROWTYPE;
	/*Create Cursor Variable*/
	cur_var my_RefCur;
	rec_var     employees%ROWTYPE;
 BEGIN
	OPEN cur_var FOR SELECT * FROM employees WHERE employee_id = 100;
	FETCH cur_var INTO rec_var;
	CLOSE cur_var;
	DBMS_OUTPUT.PUT_LINE ('Employee '||rec_var.first_name||' has salary '||rec_var.salary||'.');
END;
/

La creación de un cursor de referencia es un proceso de dos pasos.

Cree un tipo de puntero de referencia.

Primero necesitamos crear un tipo de puntero de referencia. Por lo tanto, al usar la instrucción TYPE, creamos un puntero de tipo de cursor de referencia como en el código anterior. En esta declaración, primero escribe la palabra clave TIPO seguido del nombre de su cursor de referencia. A partir de entonces, debe escribir una frase reservada IS REF CURSOR. Le dirá al compilador que estamos creando un tipo que es REF CURSOR. Seguido de eso, debe especificar la cláusula RETURN.

Por ejemplo

TYPE	my_RefCur	IS REF CURSOR RETURN 	employees%ROWTYPE;

Crear una variable de cursor

En el segundo paso creamos una variable de cursor. Para crear una variable de cursor, primero debe escribir el nombre de su variable seguido del nombre de su Ref Cursor. A partir de entonces, esta variable se utilizará para hacer referencia al cursor de referencia sobre el que se crea.

Por ejemplo

cur_var my_RefCur;

Además de la variable de cursor en el código anterior, también tenemos una variable adicional. Esto es nuevamente del tipo de datos de registro basado en tabla y diseñado usando la tabla 'Empleados'. Además, esta variable contendrá los datos extraídos del cursor.

rec_var     employees%ROWTYPE;

Sección de Ejecución

En la sección de ejecución de nuestro código tenemos cuatro sentencias ejecutables. Déjame explicarte esto.

  1. OPEN FOR sentencia

La primera sentencia es la sentencia OPEN FOR. Asocia la sentencia SELECT con la variable Cursor y abre el cursor para la sentencia. Además, también busca todos los recursos necesarios para procesar la sentencia SELECT.

  1. Declaración FETCH

Como discutimos en el tutorial 26 de PL/SQL, el proceso de recuperar datos del cursor se llama obtener. Por lo tanto, aquí estamos obteniendo los datos del Ref Cursor en la variable de registro 'Rec_Var'.

  1. Cerrar declaración

Una vez que hayamos terminado con nuestro cursor, es recomendable cerrarlo para que nuestro Oracle Engine / Server pueda renunciar a todos los recursos asociados con él. Eso es exactamente lo que hemos hecho en la tercera declaración. Usando la palabra clave CLOSE seguida de la variable del cursor, cerramos nuestro cursor de referencia.

  1. Declaración de salida

La cuarta declaración es una declaración DBMS_OUTPUT. Mostrará el nombre y el salario del empleado con identificación de empleado 100.

Puede ver el tutorial 33 de PL/SQL para aprender el funcionamiento de una variable de registro basada en tablas.

Por lo tanto, en conclusión...

En el código anterior, creamos un cursor de referencia fuerte PL/SQL con el nombre 'my_RefCur' que devolverá un tipo de datos de registro basado en la tabla de resultados. Además, este tipo de datos de registro basado en tabla es compatible con la tabla Empleados del esquema de recursos humanos. Por lo tanto, antes de ejecutar este programa, debemos asegurarnos de que estamos conectados al esquema de recursos humanos de nuestra base de datos.

Además, si aprendes mejor viendo videos, aquí hay uno para ti. Continúe y compruébelo.

Ese es el tutorial sobre cómo crear cursores de referencia fuertes PL/SQL utilizando el tipo de datos de registro basado en tablas en la base de datos Oracle. Espero que hayas aprendido algo nuevo. Además, asegúrese de compartir este blog en sus redes sociales con sus amigos.

Gracias por su visita. Estén atentos, ya que en el próximo tutorial aprenderemos cómo crear un cursor de referencia fuerte con una variable de registro definida por el usuario.

¡Que tengas un gran día!