Quando uma instrução SQL é executada no Oracle, o PL/SQL cria uma área de trabalho privada para a instrução chamada PGA. É onde os dados que são retornados da instrução SQL são armazenados. O nome do cursor é basicamente um apontador para esta área. Podem ser implícitos ou explícitos. Toda instrução SQL que é executada é um cursor implícito. Um cursor explícito é aquele que tem um nome e é declarado explicitamente, como no exemplo abaixo:
DECLARE
/* DECLARANDO O CURSOR DE PRODUTOS */
CURSOR C_PRODUTOS IS
SELECT * FROM TB_PRODUTOS;
/* DECLARANDO UMA VARIAVEL QUE SERA O REGISTRO DA TABELA */
REG_PRODUTO C_PRODUTOS%ROWTYPE;
BEGIN
/* ABRE CURSOR */
OPEN C_PRODUTOS
LOOP
/* LÊ UM REGISTRO DO CURSOR */
FETCH C_PRODUTOS INTO REG_PRODUTO;
/* ABANDONA O LOOP CASO SEJA O FINAL DO CURSOR */
EXIT WHEN C_PRODUTOS%NOTFOUND;
/*
AQUI SERA INSERIDO O CODIGO QUE IRA MANIPULAR OS DADOS COMO:
- INSERIR EM OUTRA TABELA,
- FAZER ALGUM CALCULO,
- ETC.
*/
END LOOP;
/* FECHA O CURSOR */
CLOSE C_PRODUTOS
END;