da Oracle cursores explícitos - aqueles que você deve declarar fisicamente - permitem remover a limitação de " linha única " de instruções SELECT comuns. Em vez de copiar e armazenar valores de coluna nas variáveis instrução SELECT uma linha de cada vez, cursores explícitos permitem que você execute uma consulta, armazenar uma coleção de valores na memória e voltar e processar cada registro individualmente. Isto não só reduz o tempo de processamento , mas também reduz a quantidade de código que você precisa para escrever. Automatizar o processo e reduzir ainda mais os requisitos de codificação usando um cursor para loop de rec para percorrer e recuperar vários registros de banco de dados . Instruções
1
Criar ou declarar o cursor como normal , dando-lhe um nome único, vinculando-o a uma instrução SELECT comum e , em seguida, anexá-lo para a seção de declaração de sua função ou processo. A instrução SELECT pode ser simples ou pode ser mais complexa , como um ONDE /instrução SELECT /GROUPBY . Se, por exemplo , você quer usar um cursor para loop de rec para buscar o salário mensal atual de cada um dos seus funcionários e , em seguida, um total destes valores, a instrução de declaração será exibido como :
CREATE OR REPLACE SalaryExpense Função ( name_in IN varchar2 ) número RETURN varchar2IStotal_val (6);
DECLARAR cursor salary_cursor isselect monthly_salaryfrom employeeswhere name = name_in ;
BEGIN
(Referência 1 página 6, 7 e Referência 2)
2
Escreva uma declaração de looping que abre automaticamente o cursor , os acessos a cada registro de funcionário , extrai a informação mensal de salário , você precisa calcular sua despesa de salário mensal e adiciona cada valor para um total em execução. Quando o ciclo chega ao último registro , ele fecha automaticamente o cursor :
total_monthy_salary : = 0;
PARA employee_rec em salary_cursorLOOPtotal_monthy_salary : = total_monthy_salary + employee_rec.monthly_salary ; END LOOP ;
3
Exibir os resultados e acabar com a função ou processo :
DEVOLVER total_monthy_salary ; END;