Introdução aos Cursores em PL / SQL

PL / SQL é uma das linguagens de programação mais usadas quando se trata de programação de banco de dados. Alguns conceitos importantes de PL / SQL precisam aprender e entender claramente por um programador de PL / SQL para usá-los adequadamente. O cursor é um deles. No programa PL / SQL, as instruções SQL precisam ser executadas no final. O cursor é como um ponteiro usado para apontar a área de contexto, criada pelo Oracle para executar a instrução SQL. Um Cursor mantém todas as linhas retornadas após o processamento das instruções SQL. O conjunto da linha que é mantida pelo Cursor é chamado de Conjunto Ativo. O cursor também pode ser nomeado para usá-lo ainda mais no programa por um programador. Neste tópico, vamos aprender sobre os cursores no PL / SQL.

Tipos de Cursores

Existem 2 tipos de Cursores usados ​​na programação PL / SQL:

1. Cursores implícitos

Como o nome indica, cursores implícitos são aqueles criados automaticamente pelo Oracle quando são executadas quaisquer instruções DML como INSERT, DELETE, UPDATE. Quando o programador não cria nenhum cursor, o Oracle por si só o cria para manter as linhas afetadas pelas instruções DML. Esses cursores não podem ser nomeados pelo programador e, portanto, não podem ser referidos e usados ​​em outro local no código. Embora o Oracle forneça alguns atributos para executar algumas operações, como

% Encontrado, % não encontrado, % ROWCOUNT, % ISOPEN.

S.No.AtributoDescrição
1%ENCONTRADORetorna True se instruções DML como INSERT,

DELETE, UPDATE afeta uma ou mais linhas ou a instrução SELECT retorna uma ou mais linhas. Caso contrário, ele retornará False

2)%NÃO ENCONTRADOÉ o oposto do atributo% FOUND. Retorna True se nenhuma das linhas for afetada pela instrução DML ou a instrução SELECT não retornar resultados. Caso contrário, ele retornará False.
3)%ESTÁ ABERTONo caso de cursores implícitos, ele sempre retorna False porque o Oracle fecha o cursor logo após a execução das instruções SQL.
4)%CONTAGEM DE LINHASRetorna a contagem de linhas. Ou seja, a contagem do número de linhas afetadas pelo DML mencionado
instruções do programador no código PL / SQL, como INSERT, DELETE e UPDATE ou o número de linhas retornadas pela instrução SELECT INTO.
Exemplo

Cenário: Para atualizar as marcas de todos os alunos em uma tabela 'aluno' em inglês Assunto com a coluna 'assunto' em 10.

DECLARE
affected_rows number(4);
BEGIN
UPDATE students SET marks = marks+10 where subject = 'English';
IF​ sql%NOTFOUND THEN dbms_output.put_line ('No records of English subject are updated');
ELSIF sql%FOUND THEN​ affected rows: = affected rows%rowcount
dbms_output.put_line('Congrats ..Records Updated' || affected_rows);
END IF;
END;
/

2. Cursores explícitos

Cursores explícitos são aqueles cursores definidos pelos programadores para ter mais controle sobre a área de contexto (onde os resultados das consultas SQL são armazenados). Esses cursores precisam ser definidos primeiro no bloco de declaração do programa PL / SQL. Ele é criado para as instruções SQL que retornam mais de uma linha após processá-las. Existe um procedimento específico que precisa ser seguido para o uso de um Cursor Explícito. As etapas para usar o Cursor Explícito são mencionadas abaixo:

1. Declarar o cursor: É usado para dar um nome à área de contexto / cursor junto com a instrução select que precisa ser executada.

Sintaxe

CURSOR cursor_name IS SELECT statement;

2. Abra o cursor: Abrir um cursor, aloca a memória para ele e disponibiliza-o para buscar os registros retornados pela instrução SQL.

Sintaxe

OPEN cursor_name;

3. Busque o cursor: nesse processo, uma linha é acessada por vez. A instrução SELECT é executada e as linhas buscadas são armazenadas na área de contexto. Ele busca os registros e os atribui a uma variável definida.

Sintaxe

FETCH cursor_name INTO variable;

4. Feche o cursor: Esta etapa é usada para fechar o cursor aberto acima para desalocar a memória assim que todas as linhas armazenadas forem buscadas com êxito.

Sintaxe

CLOSE cursor_name;

Exemplo

Cenário: recuperar o nome, endereço e porcentagem geral de alunos em uma tabela

'aluno' com colunas 'nome', 'endereço' e 'porcentagem'

DECLARE
stud_name student.name%type; stud_address student.address%type;
stud_percentage student.percentage%type;
CURSOR stud IS SELECT name, address, percentage FROM student; BEGIN
Open stud;
LOOP
FETCH stud into stud_name, stud_address, stud_percentage;
EXIT when stud%NOTFOUND;
dbms_ouput.put_line(stud_name || ' ' || stud_address || ' ' || stud_percentage);
END LOOP;
CLOSE stud;
END
/

Ações do cursor

Ao contrário do SQL, que funciona em todas as linhas de um conjunto de resultados de cada vez, o cursor é usado principalmente nos cenários em que o programador deseja processar e recuperar os dados de uma linha de cada vez.

Abaixo mencionadas, estão algumas das ações do cursor:

  1. Declarar um cursor: É importante declarar um cursor antes de usá-lo. Um cursor é declarado definindo a instrução SQL que precisa ser processada.
  2. Abrir um Cursor: Após a declaração, um cursor é aberto e preenchido pelo retorno de dados pelo processamento da instrução SQL.
  3. Buscar um Cursor: Depois que o cursor é aberto, as linhas de saída precisam ser buscadas uma a uma para executar qualquer manipulação, se necessário.
  4. Feche um cursor: Depois de toda a manipulação de dados. Um cursor criado precisa ser fechado
  5. Desalocar: Esta etapa inclui excluir o cursor e libera todos os recursos que ele possui.

Importância do Cursor no PL / SQL

Apontar para o local da memória e executar ações de acordo é uma das tarefas importantes em qualquer linguagem de programação. No PL / SQL, é feito pelos cursores. Os cursores desempenham um papel crucial quando se trata de executar tarefas diferentes, atribuindo um nome à área de memória (área de contexto) em que os resultados das consultas SQL são salvos. Podemos acessar os registros um por um e executar qualquer manipulação nele, se necessário, ou exibi-los no console de acordo. Os cursores explícitos são mais eficientes, oferecem mais controle programático e menos vulneráveis ​​a erros de dados, portanto, são muito úteis na programação PL / SQL que os implícitos.

Conclusão

Atualmente, a programação de banco de dados é muito popular e o PL / SQL é uma das linguagens que devem ser muito bem usadas. Os cursores dão mais controle ao programador para acessar os dados recuperados. Para um programador trabalhar no PL / SQL, é importante conhecer o uso e a importância do Cursor para funcionar de maneira eficaz.

Artigos recomendados

Este é um guia para os cursores em PL / SQL. Aqui discutimos os tipos de Cursores usados ​​na programação PL / SQL com Ações do Cursor e a importância do cursor. Você também pode consultar os seguintes artigos para saber mais -

  1. Tipos de junções no SQL
  2. Consulta de Inserção SQL
  3. Tabela no SQL
  4. Curinga no SQL
  5. Os 6 principais tipos de junções no MySQL com exemplos