Diferencia entre cursor explícito y cursor implícito

Diferencia entre cursor explícito y cursor implícito
Diferencia entre cursor explícito y cursor implícito

Video: Diferencia entre cursor explícito y cursor implícito

Video: Diferencia entre cursor explícito y cursor implícito
Video: Untethered Jailbreak vs Tethered Jailbreak vs SemiTethered Jailbreak 2024, Mes de julio
Anonim

Cursor explícito frente a cursor implícito

Cuando se trata de bases de datos, un cursor es una estructura de control que permite recorrer los registros de una base de datos. Un cursor proporciona un mecanismo para asignar un nombre a una declaración de selección de SQL y luego se puede usar para manipular la información dentro de esa declaración de SQL. Los cursores implícitos se crean y utilizan automáticamente cada vez que se emite una instrucción Select en PL/SQL, cuando no hay un cursor definido explícitamente. Los cursores explícitos, como sugiere el nombre, los define explícitamente el desarrollador. En PL/SQL, un cursor explícito es en realidad una consulta con nombre definida mediante la palabra clave cursor.

¿Qué es el cursor implícito?

Los cursores implícitos son creados y utilizados automáticamente por Oracle cada vez que se emite una declaración de selección. Si se utiliza un cursor implícito, el Sistema de gestión de bases de datos (DBMS) realizará las operaciones de apertura, recuperación y cierre automáticamente. Los cursores implícitos deben usarse solo con instrucciones SQL que devuelven una sola fila. Si la instrucción SQL devuelve más de una fila, el uso de un cursor implícito generará un error. Un cursor implícito se asocia automáticamente con cada declaración del Lenguaje de manipulación de datos (DML), a saber, las declaraciones INSERTAR, ACTUALIZAR y ELIMINAR. Además, se utiliza un cursor implícito para procesar sentencias SELECT INTO. Al obtener datos utilizando cursores implícitos, se puede generar la excepción NO_DATA_FOUND cuando la instrucción SQL no devuelve datos. Además, los cursores implícitos pueden generar DEMASIADAS_MANY_ROWS excepciones cuando la instrucción SQL devuelve más de una fila.

¿Qué es el cursor explícito?

Como se mencionó anteriormente, los cursores explícitos son consultas definidas mediante un nombre. Se puede pensar en un cursor explícito como un puntero a un conjunto de registros y el puntero se puede mover hacia adelante dentro del conjunto de registros. Los cursores explícitos brindan al usuario el control completo sobre la apertura, el cierre y la obtención de datos. Además, se pueden recuperar varias filas con un cursor explícito. Los cursores explícitos también pueden tomar parámetros como cualquier función o procedimiento para que las variables en el cursor se puedan cambiar cada vez que se ejecuta. Además, los cursores explícitos le permiten obtener una fila completa en una variable de registro PL/SQL. Cuando se usa un cursor explícito, primero debe declararse con un nombre. Se puede acceder a los atributos del cursor usando el nombre dado al cursor. Después de declarar, el cursor debe abrirse primero. Entonces se puede iniciar la búsqueda. Si es necesario recuperar varias filas, la operación de recuperación debe realizarse dentro de un bucle. Finalmente, el cursor debe cerrarse.

Diferencia entre cursor explícito y cursor implícito

La principal diferencia entre el cursor implícito y el cursor explícito es que un cursor explícito debe definirse explícitamente proporcionando un nombre, mientras que los cursores implícitos se crean automáticamente cuando emite una declaración de selección. Además, se pueden obtener varias filas utilizando cursores explícitos, mientras que los cursores implícitos solo pueden obtener una sola fila. Además, las excepciones NO_DATA_FOUND y TOO_MANY_ROWS no se generan cuando se usan cursores explícitos, a diferencia de los cursores implícitos. En esencia, los cursores implícitos son más vulnerables a los errores de datos y brindan menos control programático que los cursores explícitos. Además, los cursores implícitos se consideran menos eficientes que los cursores explícitos.

Recomendado: