OracleデータベースのPL/SQLSYS_REFCURSOR
参照カーソルの概要で学習したように、Oracleデータベースには3種類のPL/SQL参照カーソルがあります。
- 強力な参照カーソル
- 弱い参照カーソルと
- SYS_REFCURSOR
このシリーズのこれまでのところ、強参照カーソルと弱参照カーソルの概念について説明してきました。まだ変更されていないカーソルのタイプは、OracleDatabaseのPL/SQLSYS_REFCURSORのみです。これについては、このブログで学習します。
PL / SQL SYS_REFCURSORとは何ですか?
SYS_REFCURSORは、Oracleデータベースソフトウェアに組み込まれている事前定義された弱参照カーソルです。
事前定義された参照カーソルであるとどのように役立ちますか?
SYS_REFCURSORは、事前定義された弱参照カーソルです。つまり、前のチュートリアルで明示的な弱参照カーソルを使用した場合のように、コードに定義する必要はありません。そのチュートリアルで学んだように、弱参照カーソルの作成は2段階のプロセスです。最初に「弱い参照カーソルタイプ」を作成する必要があり、次にその参照カーソルを使用して「カーソル変数」を作成する必要があります。
SYS_REFCURSORを使用する場合は、カーソル変数を作成するだけで済みます。 SYS_REFCURSORは、弱参照カーソルタイプを作成する最初のステップを完全に最小化します。
Sys_Refcursorは組み込みのrefカーソルですが、その定義はどこにありますか?
PL / SQL SYS_REFCURSORの定義は、「stdspec.sql」という名前のスクリプトで確認できます。このスクリプトは、パスが次のディレクトリにあります。
%ORACLE_HOME% \RDBMS\ADMIN\stdspec.sql
SYS_REFCURSOR定義は次のようになります:
SYS_REFCURSORとはどのタイプの参照カーソルですか?
上記の定義で述べたように、SYS_REFCURSORは弱参照カーソルです。
これで、SYS_REFCURSORに関するほとんどすべての疑問が解消されました。最後にもう1つ質問したいのですが。
情報:REFとCURSORの間にスペースはありません。 「RefCursor」という一言です。
間違い:SYS_REF CURSOR
正解:SYS_REFCURSOR
事前定義されたカーソルがあるのに、なぜ誰かが弱い参照カーソルを宣言するのですか?
それは実際には非常に良い質問です。この質問に対する答えは、いいえ、弱参照カーソルを明示的に作成する必要はありません。 Oracle Database 9i以降、SYS_REFCURSORを標準パッケージの一部として出荷することにより、弱参照カーソルを作成する必要性を最小限に抑えましたが、作成するオプションは引き続き利用できます。
これは個人的な選択のようなものです。誰かが弱い参照カーソルを作成したい場合は、それが可能です。そうでない場合は、SYS_REFCURSORをいつでも自由に使用できます。親愛なる友人のスティーブン・フォイアースタインは、この質問に答える非常に優れたブログ投稿を行いました。これはここで読むことができます。
OracleDatabaseでPL/SQLSYS_REFCURSORを使用する方法を示す非常に簡単な例を見てみましょう。
例:OracleデータベースでPL / SQL SYS_REFCURSORを作成するにはどうすればよいですか?
SET SERVEROUTPUT ON; DECLARE --Declare cursor variable of SYS_REFCURSOR type cur_var SYS_REFCURSOR; --Declare variables for holding data f_name employees.first_name%TYPE; emp_sal employees.salary%TYPE; BEGIN OPEN cur_var FOR SELECT first_name, Salary FROM employees WHERE employee_id = 100; FETCH cur_var INTO f_name, emp_sal; CLOSE cur_var; DBMS_OUTPUT.PUT_LINE(f_name ||' '||emp_sal); END; /
上記のコードの詳細な説明については、YouTubeチャンネルのビデオチュートリアルをご覧ください。
あなたが読書を楽しんで、何か新しいことを学んだことを願っています。このブログをソーシャルメディアで友達と共有してください。ありがとう、そして素晴らしい一日を。