Diferencia Entre El Cursor Explícito Y El Cursor Implícito

Diferencia Entre El Cursor Explícito Y El Cursor Implícito
Diferencia Entre El Cursor Explícito Y El Cursor Implícito

Vídeo: Diferencia Entre El Cursor Explícito Y El Cursor Implícito

Vídeo: Diferencia Entre El Cursor Explícito Y El Cursor Implícito
Vídeo: PLSQL Básico - Cursores Implicitos (vs cursores explìcitos) - Excepciones 2024, Mayo
Anonim

Cursor explícito vs 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 instrucción de selección de SQL y luego puede usarse para manipular la información dentro de esa instrucció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, son definidos explícitamente por el desarrollador. En PL / SQL, un cursor explícito es en realidad una consulta con nombre definida mediante el cursor de palabra clave.

¿Qué es el cursor implícito?

Oracle crea y utiliza automáticamente cursores implícitos cada vez que se emite una sentencia de selección. Si se utiliza un cursor implícito, el sistema de gestión de bases de datos (DBMS) realizará las operaciones de abrir, recuperar y cerrar automáticamente. Los cursores implícitos deben usarse solo con instrucciones SQL que devuelvan una sola fila. Si la instrucción SQL devuelve más de una fila, el uso de un cursor implícito introducirá un error. Un cursor implícito se asocia automáticamente con cada instrucción de lenguaje de manipulación de datos (DML), es decir, instrucciones INSERT, UPDATE y DELETE. Además, se utiliza un cursor implícito para procesar sentencias SELECT INTO. Cuando se obtienen datos mediante 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 excepciones TOO_MANY_ROWS 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 proporcionan al usuario el control completo sobre la apertura, cierre y obtención de datos. Además, se pueden recuperar varias filas utilizando 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 ejecute. 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 se debe declarar usando 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 búsqueda debe realizarse dentro de un bucle. Finalmente, el cursor debe estar cerrado.

Diferencia entre el cursor explícito y el 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 instrucción de selección. Además, se pueden recuperar varias filas utilizando cursores explícitos, mientras que los cursores implícitos solo pueden recuperar una única fila. Además, las excepciones NO_DATA_FOUND y TOO_MANY_ROWS no se generan cuando se utilizan 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 proporcionan 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: