DEV Community

Rafael Gebim
Rafael Gebim

Posted on

Cursores

Os cursores são uma estrutura de controle com o intuito de permissionar a manipulação dos registros resultantes de uma consulta PL/SQL, uma das analogias mais comuns é imaginar o cursor como um ponteiro que ao ser realizada uma ação PL/SQL irá apontar para cada registro ou conjunto de registros e realizar uma manipulação desses conjuntos de dados.
Os cursores tendem a ser divididos em dois ramos distintos Implícitos e Explícitos, onde os cursores Implícitos como o nome já descreve está implícito e declarado pela Oracle e não tem necessidade de serem declarados e tem os nomes já reservados.
Exemplos de cursores implícitos são: SQL%Found, SQL%NOTFOUND, SQL%ROWCOUNT. Cada um desses cursores retorna um tipo de informação distinta SQL%Found e SQL%NOTFOUND retornam TRUE se a última instrução afetou um registro ou não respectivamente, já SQL%ROWCOUNT retorna o número de registros afetados na última instrução.Um outro exemplo de cursor implicito e uma caracteristica do mesmo é o SQL%ISOPEN pois sempre irá retornar FALSE pois na estrutura desses cursores sempre são fechados ao término da execução.
Os usos mais comuns e até recomendados para cursores implícitos são a verificação se a ação afetou algum registro e o acesso a essas informações.
Os cursores explícitos tem uma atuação um pouco maior pois em diferente do cursor implícito não está tão restrito e definido previamente, em sua utilização ela é declarada de forma explícita ou seja ela precisa ser definida e pode ser utilizada com parâmetros o que deixa quase que com uma infinidades de possibilidades em sua utilização, além disso um cursor explícito possibilita a utilização de FOR e LOOP.
Cursores Explícitos tem uma estrutura que deve ser seguida declaração do cursor (DECLARE), abertura do cursor(OPEN), busca dos dados(FETCH) e fechamento (CLOSE).
Como recomendação na utilização dos tipos de cursores a utilização do Implícito é realizada em ações mais simples e diretas onde não é necessária uma estruturação mais elaborada e o cursor Explícito remete a utilização de um gerenciamento mais elaborado na manipulação da consulta realizada com PL/SQL.
Um exemplo de utilização de um cursor Implícito seria na contagem de registros que foram afetados em uma alteração de funcionários de uma filial para outra, no caso seria utilizado o cursor implícito SQL%ROWCOUNT pois ele retorna o número de registros afetados na última instrução. E um exemplo de cursor explícito seria a mesma consulta com um parâmetro onde seria contado somente um cargo específico e seria impresso a filial destinatária. Aqui fica claro que um cursor explícito tem uma atuação mais abrangente por possibilitar alterações, condicionais e parâmetros.
Os cursores tanto implícitos e explícitos são inegavelmente uma ferramenta poderosa no desenvolvimento de um banco de dados funcional e bem estruturado.

Top comments (0)