Cursor explícito vs Cursor implícito
Quando se trata de bancos 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 nessa instrução SQL. Os cursores implícitos são criados e usados automaticamente toda vez que uma instrução Select é emitida no PL / SQL, quando não há um cursor definido explicitamente. Cursores explícitos, como o nome sugere, são definidos explicitamente pelo desenvolvedor. No PL / SQL, um cursor explícito é na verdade uma consulta nomeada definida usando a palavra-chave cursor.
O que é o Cursor Implícito?
Os cursores implícitos são criados e usados automaticamente pela Oracle sempre que uma instrução select é emitida. Se um cursor implícito for usado, o DBMS (Sistema de Gerenciamento de Banco de Dados) executará as operações de abertura, busca e fechamento automaticamente. 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 é associado automaticamente 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 gerada quando a instrução SQL não retorna dados. 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 é o Cursor Explícito?
Como mencionado anteriormente, cursores explícitos são consultas definidas usando um nome. Um cursor explícito pode ser considerado 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 são executadas. Além disso, cursores explícitos permitem buscar 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. Após a declaração, o cursor precisa ser aberto primeiro. A busca pode ser iniciada. Se várias linhas precisarem ser buscadas, a operação de busca precisará ser feita dentro de um loop. Finalmente, o cursor precisa ser fechado.
Diferença entre cursor explícito e 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 os 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, em oposição aos 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 do que os cursores explícitos.