Cursor explícito vs Cursor implícito
Quando se trata de banco de dados, um cursor é uma estrutura de controle que permite percorrer os registros em um banco de dados. Um cursor fornece um mecanismo para atribuir um nome a uma instrução SQL select e, em seguida, pode ser usado para manipular as informações dentro dessa instrução SQL. Os cursores implícitos são criados automaticamente e usados sempre que uma instrução Select é emitida em PL/SQL, quando não há um cursor definido explicitamente. Os cursores explícitos, como o nome sugere, são definidos explicitamente pelo desenvolvedor. Em PL/SQL, um cursor explícito é na verdade uma consulta nomeada definida usando a palavra-chave cursor.
O que é Cursor Implícito?
Cursores implícitos são criados automaticamente e usados pelo Oracle sempre que uma instrução select é emitida. Se um cursor implícito for usado, o Sistema de Gerenciamento de Banco de Dados (SGBD) realizará as operações de abertura, busca e fechamento automaticamente. Os cursores implícitos devem ser usados apenas com instruções SQL que retornam uma única linha. Se a instrução SQL retornar mais de uma linha, o uso de um cursor implícito apresentará um erro. Um cursor implícito é automaticamente associado a cada instrução DML (Data Manipulation Language), ou seja, instruções INSERT, UPDATE e DELETE. Além disso, um cursor implícito é usado para processar instruções SELECT INTO. Ao buscar dados usando cursores implícitos, a exceção NO_DATA_FOUND pode ser levantada quando a instrução SQL não retornar nenhum dado. Além disso, cursores implícitos podem gerar exceções TOO_MANY_ROWS quando a instrução SQL retornar mais de uma linha.
O que é Cursor Explícito?
Como mencionado anteriormente, cursores explícitos são consultas definidas usando um nome. Um cursor explícito pode ser considerado como um ponteiro para um conjunto de registros e o ponteiro pode ser movido para frente dentro do conjunto de registros. Os cursores explícitos fornecem ao usuário o controle completo sobre a abertura, fechamento e busca de dados. Além disso, várias linhas podem ser buscadas usando um cursor explícito. Os cursores explícitos também podem receber parâmetros como qualquer função ou procedimento para que as variáveis no cursor possam ser alteradas cada vez que ele for executado. Além disso, os cursores explícitos permitem que você busque uma linha inteira em uma variável de registro PL/SQL. Ao usar um cursor explícito, primeiro ele precisa ser declarado usando um nome. Os atributos do cursor podem ser acessados usando o nome dado ao cursor. Depois de declarar, o cursor precisa ser aberto primeiro. Em seguida, a busca pode ser iniciada. Se várias linhas precisam ser buscadas, a operação de busca precisa ser feita dentro de um loop. Finalmente, o cursor precisa ser fechado.
Diferença entre o cursor explícito e o cursor implícito
A principal diferença entre o cursor implícito e o cursor explícito é que um cursor explícito precisa ser definido explicitamente fornecendo um nome enquanto os cursores implícitos são criados automaticamente quando você emite uma instrução select. Além disso, várias linhas podem ser buscadas usando cursores explícitos, enquanto cursores implícitos podem buscar apenas uma única linha. Além disso, as exceções NO_DATA_FOUND e TOO_MANY_ROWS não são geradas ao usar cursores explícitos, ao contrário de cursores implícitos. Em essência, os cursores implícitos são mais vulneráveis a erros de dados e fornecem menos controle programático do que os cursores explícitos. Além disso, os cursores implícitos são considerados menos eficientes que os explícitos.