Cursores explícitos
Cursores explícitos são cursores que você declara e usa.Cursores implícitos
PL/SQL permite que você inclua instruções SQL, incluindo instruções SELECT, como parte de seu código sem declarar um cursor, que é chamado de cursor implícito.Cursores de referência
Um cursor faz referência a um conjunto de resultados. O REF CURSOR permite passar uma referência de cursor de uma unidade de programa PL/SQL para outra. Em outras palavras, ele permite que você crie uma variável que receberá um cursor e habilitará o acesso ao seu conjunto de resultados, mas neste blog estou dando exemplos apenas para Cursores Explícitos e Implícitos, vou dar exemplo para Cursores Ref e Cursor dinâmico em outro blog .Um exemplo de Explicit Cursor:DECLARE nemployeeid NUMBER; dstartdate DATA; denddate DATA; sjobid VARCHAR2 (20); -- declara cursor CURSOR curjob IS SELECT employee_id, start_date, end_date, job_id FROM hr.job_history;BEGIN OPEN curjob; LOOP FETCH curjob INTO nemployeeid, dstartdate, denddate, sjobid; SAIR QUANDO curjob%NOTFOUND; DBMS_OUTPUT.put_line( 'Employee ' || nemployeeid || 'havia emprego ' || sjobid || ' for ' || (denddate - dstartdate) || ' days.'); FIM DO LOOP; CLOSE curjob;END;/O mesmo exemplo é dado abaixo para cursor explícito, mas com For Loop, os cursores For Loop são mais inteligentes, pois não há necessidade de declarar variáveis para buscar valores neles e não há necessidade de abrir ou fechar ou verificar se o ponteiro está no final do cursor. Aqui está o exemplo:DECLARE CURSOR curjob IS SELECT employee_id, start_date, end_date, job_id FROM hr.job_history;BEGIN FOR jh_rec IN curjob LOOP DBMS_OUTPUT.put_line( ''Employee ' || jh_rec.employee_id || ' had job ' || jh_rec .job_id || ' para ' || ( jh_rec.end_date - jh_rec.start_date || ' dias.')); END LOOP;END;/Um exemplo de Cursor Implícito:DECLARE nempno NUMBER; CURSOR curjob IS SELECT employee_id, start_date, end_date, job_id FROM hr.job_history;BEGIN -- abaixo da consulta sql é o tipo de Cursor Implícito SELECT COUNT ( * ) INTO nempno FROM hr.job_history; DBMS_OUTPUT.put_line ( 'Existem ' || nempno || ' registros de histórico de funcionários.'); FOR jh_rec IN curjob LOOP DBMS_OUTPUT.put_line('Funcionário ' || jh_rec.employee_id || ' tinha trabalho ' || jh_rec.job_id || ' for ' || ( jh_rec.end_date - jh_rec.start_date || ' dias.' )); END LOOP;END;/-
O que é o Azure Data Studio?
-
Parte 1:Classificação de imagens com MariaDB Server e TensorFlow – uma visão geral
-
Etapas para alterar a senha de administrador perdida ou esquecida de um domínio EBS WebLogic R12.2
-
Gráficos personalizados para monitorar seus sistemas MySQL, MariaDB, MongoDB e PostgreSQL - Dicas e truques do ClusterControl