暗黙カーソルは、クエリの実行時にOracleによって「自動的に」作成されるカーソルです。コーディングは簡単ですが、
に悩まされています- 非効率(ANSI規格では、複数のレコードがあるかどうかを確認するために2回フェッチする必要があると規定されています)
- データエラーに対する脆弱性(2行を取得した場合、TOO_MANY_ROWS例外が発生します)
例
SELECT col INTO var FROM table WHERE something;
明示カーソルは、自分で作成したカーソルです。より多くのコードが必要になりますが、より詳細な制御が可能になります。たとえば、最初のレコードのみが必要で、他のレコードが必要な場合は、オープン-フェッチ-クローズすることができます。
例
DECLARE
CURSOR cur IS SELECT col FROM table WHERE something;
BEGIN
OPEN cur;
FETCH cur INTO var;
CLOSE cur;
END;