ホームページ >データベース >Oracle >Oracleストアドプロシージャのカーソルとは何ですか?

Oracleストアドプロシージャのカーソルとは何ですか?

WBOY
WBOYオリジナル
2022-02-28 11:05:398255ブラウズ

Oracle では、カーソルは SQL のメモリ ワークスペースであり、システムまたはユーザーによって変数の形式で定義され、データベースから抽出されたデータ ブロックを一時的に保存するために使用されます。データはデータベースから転送されます。カーソル変数へ 最後に、アプリケーションはカーソル変数から必要なデータを分解して処理します。

Oracleストアドプロシージャのカーソルとは何ですか?

このチュートリアルの動作環境: Windows 10 システム、Oracle 11g バージョン、Dell G3 コンピューター。

Oracleストアドプロシージャのカーソルとは

1. カーソルの使い方。この概念を非常によく説明している次の段落を見つけました。

カーソルは SQL のメモリ ワークスペースであり、システムまたはユーザーによって変数の形式で定義されます。カーソルの目的は、データベースから抽出されたデータ ブロックを一時的に保存することです。場合によっては、ディスクに保存されているテーブルからコンピュータのメモリにデータを転送して処理し、最終的に処理結果を表示したり、データベースに書き戻したりする必要があります。これにより、データ処理の速度が向上しますが、そうしないと、ディスク データの交換が頻繁に発生して効率が低下します。

カーソルには、明示的カーソルと暗黙的カーソルの 2 種類があります。前述のプログラムで使用されている SELECT...INTO... クエリ ステートメントでは、一度にデータベースから 1 行のデータしか抽出できません。この形式のクエリおよび DML 操作では、システムは暗黙的カーソルを使用します。ただし、複数行のデータを抽出する場合は、プログラマが明示的なカーソルを定義し、カーソル関連のステートメントを通じてそれを処理する必要があります。明示カーソルは、複数の行と列を返す SELECT ステートメントに対応します。

カーソルが開かれると、データがデータベースからカーソル変数に転送され、アプリケーションはカーソル変数から必要なデータを分解して処理します。変数への値の挿入、更新、削除、選択の操作では、暗黙的なカーソルを使用します。

暗黙的なカーソル属性 戻り値の型の意味:

  • SQL%ROWCOUNT 整数は、DML ステートメントによって正常に実行されたデータ行の数を表します

  • #SQL%FOUND ブール型 TRUE の値は、挿入、削除、更新、または単一行のクエリ操作が成功したことを示します

  • SQL%NOTFOUND ブール型 によって返される値SQL%FOUND 属性は反対です
  • SQL%ISOPEN ブール値 DML 実行中は True、完了後は false
  • 2. 暗黙的カーソル:
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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。