Olá queridos Leitores, hoje iremos falar a respeito de um assunto que é frequentemente usado em aplicações não somente PL/SQL como em outras linguagens de programação. Estou falando do uso de Cursores. Existem várias maneiras de usarmos um cursor. Hoje irei mostrar 2 maneiras que retornam o mesmo resultado, e deixar ao seu critério sobre qual utilizar no seu ambiente de trabalho ou estudos.
Primeiramente vamos a uma definição rápida sobre o que são cursores.
Cursores são áreas compostas de linhas e colunas armazenadas em memória que servem para armazenar o resultado de uma seleção que retorna nenhuma, uma ou diversas linhas. Os cursores, no banco de dados Oracle podem ser explícitos e implícitos.
O PL/SQL declara um cursor implicitamente para toda instrução DML (UPDATE, INSERT, DELETE, SELECT…INTO), incluindo consultas que retornam apenas uma linha.
Com o uso de cursores é possível selecionar um conjunto de linhas e manipular o resultado desta consulta linha a linha, dentro de um código PL/SQL (Program Language SQL), como procedures, triggers, blocos de código PL/SQL entre outros objetos.
Agora vamos observar de forma prática o funcionamento dos cursores:
1º FORMA CURSOR EXPLÍCITO
[well]
DECLARE
/* DECLARANDO O CURSOR DE EMPLOYEES */
CURSOR C_EMP IS
SELECT * FROM EMPLOYEES;
/* DECLARANDO A VARIAVEL QUE RECEBERÁ OS REGISTROS DA TABELA */
R_EMP C_EMP%ROWTYPE;
BEGIN
/* ABRE CURSOR */
OPEN C_EMP;
LOOP
/* LÊ UM REGISTRO DO CURSOR */
FETCH C_EMP
INTO R_EMP;
/* SAI DO LOOP CASO SEJA O FINAL DO CURSOR */
EXIT WHEN C_EMP%NOTFOUND;
/*
AQUI SERÃO FEITAS AS INTERAÇÕES DENTRO DO LOOP TAIS COMO CÁLCULOS, COMANDOS DML, E ETC.
*/
dbms_output.put_line(R_EMP.first_name ||‘ ‘|| R_EMP.LAST_name);
END LOOP;
/* FECHA O CURSOR */
CLOSE C_EMP;
END;
[/well]RESULTADO:
2º FORMA CURSOR IMPLÍCITO
[well]Begin
for c_emp in (SELECT * FROM EMPLOYEES) LOOP
dbms_output.put_line(C_EMP.first_name || ‘ ‘ || C_EMP.LAST_name);
END LOOP;
end;[/well]
RESULTADO:
Ambas as formar retornam os mesmos resultados porém como podemos ver a segunda forma é bem mais simples que a primeira.
Diante do que foi observado, nota-se que o uso de Cursores é muito importante tanto para a criação de processos como para outros objetos dentro do banco de dados. Observou-se também que existem várias formas de fazer e usar os cursores conforme foi demonstrado acima.
Gostou do artigo? Tem alguma crítica ou comentário? Deixe abaixo sua opinião para que possamos melhorar cada dia mais o a qualidade dos posts.