Oracle では、カーソルは SQL のメモリ ワークスペースであり、システムまたはユーザーによって変数の形式で定義され、データベースから抽出されたデータ ブロックを一時的に保存するために使用されます。データはデータベースから転送されます。カーソル変数へ 最後に、アプリケーションはカーソル変数から必要なデータを分解して処理します。
このチュートリアルの動作環境: Windows 10 システム、Oracle 11g バージョン、Dell G3 コンピューター。
1. カーソルの使い方。この概念を非常によく説明している次の段落を見つけました。
カーソルは SQL のメモリ ワークスペースであり、システムまたはユーザーによって変数の形式で定義されます。カーソルの目的は、データベースから抽出されたデータ ブロックを一時的に保存することです。場合によっては、ディスクに保存されているテーブルからコンピュータのメモリにデータを転送して処理し、最終的に処理結果を表示したり、データベースに書き戻したりする必要があります。これにより、データ処理の速度が向上しますが、そうしないと、ディスク データの交換が頻繁に発生して効率が低下します。
カーソルには、明示的カーソルと暗黙的カーソルの 2 種類があります。前述のプログラムで使用されている SELECT...INTO... クエリ ステートメントでは、一度にデータベースから 1 行のデータしか抽出できません。この形式のクエリおよび DML 操作では、システムは暗黙的カーソルを使用します。ただし、複数行のデータを抽出する場合は、プログラマが明示的なカーソルを定義し、カーソル関連のステートメントを通じてそれを処理する必要があります。明示カーソルは、複数の行と列を返す SELECT ステートメントに対応します。
カーソルが開かれると、データがデータベースからカーソル変数に転送され、アプリケーションはカーソル変数から必要なデータを分解して処理します。変数への値の挿入、更新、削除、選択の操作では、暗黙的なカーソルを使用します。
暗黙的なカーソル属性 戻り値の型の意味:
SQL%ROWCOUNT 整数は、DML ステートメントによって正常に実行されたデータ行の数を表します
create or replace procedure prc_example (epo in number) as BEGIN UPDATE emp SET sal=sal+100 WHERE empno=epo; IF SQL%FOUND THEN DBMS_OUTPUT.PUT_LINE('成功修改雇员工资!'); COMMIT; ELSE DBMS_OUTPUT.PUT_LINE('修改雇员工资失败!'); END IF; END; declare e_number number; begin e_number:=7788; prc_example(e_number); end;
3. カーソルを表示します:
カーソルを使用して、番号 10 のすべての従業員の名前をクエリします
create or replace procedure prc_example is begin declare cursor emp_sor is select ename,sal from emp where deptno=10; cname emp.ename%type; csal emp.sal%type; begin open emp_sor; loop fetch emp_sor into cname,csal; --取游标的值给变量。 dbms_output.put_line('ename:'||cname); exit when emp_sor%notfound; end loop; close emp_sor; end; end;
推奨チュートリアル: "
Oracle Video Tutorial以上がOracleストアドプロシージャのカーソルとは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。