明示カーソル
明示カーソルは、宣言して使用するカーソルです。暗黙カーソル
PL / SQLを使用すると、暗黙カーソルと呼ばれるカーソルを宣言せずに、SELECT文を含むSQL文をコードの一部として含めることができます。カーソルの参照
カーソルは結果セットを参照します。 REF CURSORを使用すると、あるPL/SQLプログラム単位から別のPL/SQLプログラム単位にカーソル参照を渡すことができます。つまり、カーソルを受け取り、その結果セットにアクセスできるようにする変数を作成できますが、このブログでは、明示カーソルと暗黙カーソルのみの例を示し、参照カーソルと別のブログの動的カーソル .Explicit Cursorの例:DECLARE nemployeeid NUMBER; dstartdate DATE;日付を決定します。 sjobid VARCHAR2(20); --カーソルを宣言しますCURSORcurjobIS SELECT employee_id、start_date、end_date、job_id FROM hr.job_history; BEGIN OPEN curjob; LOOP FETCH curjob INTO nemployeeid、dstartdate、denddate、sjobid; curjob%NOTFOUND;で終了します。 DBMS_OUTPUT.put_line('Employee' || nemployeeid ||'had job' || sjobid ||'for' ||(denddate --dstartdate)||'days。');ループを終了します。 CLOSE curjob; END; /明示カーソルの場合と同じ例を以下に示しますが、Forループを使用すると、変数を宣言して値をフェッチしたり、開いたり閉じたりする必要がないため、Forループカーソルの方が賢くなります。ポインタはカーソルの端にあります。次に例を示します。DECLARECURSORcurjobISSELECT 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 ||' has job'|| jh_rec .job_id ||'for' ||(jh_rec.end_date --jh_rec.start_date ||'日。')); END LOOP; END; /暗黙カーソルの例:DECLARE nempno NUMBER; CURSOR curjob IS SELECT employee_id、start_date、end_date、job_id FROM hr.job_history;BEGIN-以下のSQLクエリは暗黙カーソルのタイプですSELECTCOUNT(*)INTO nempno FROM hr.job_history; DBMS_OUTPUT.put_line('あります'|| nempno ||'従業員履歴レコード。'); FOR jh_rec IN curjob LOOP DBMS_OUTPUT.put_line('' Employee'|| jh_rec.employee_id ||' has job'|| jh_rec.job_id ||' for'||(jh_rec.end_date --jh_rec.start_date||'days。 ' )); END LOOP; END; /