Oracleランドマークの使用概要


Oracleのランドマークは、表示遊標と隠し遊戯標に分けられます。表示ラベル(Explicit Cursor):PL/SQLプログラムで定義されている、クエリのためのラベルを表示ラベルと呼びます。暗黙的な游び标(Implicit Cursor)とは、非PL/SQLプログラムで定義され、PL/SQLでUPDATE/DELETE文を使用すると、Oracleシステムが自動的に割り当てられる游び标のことです。一.表示ラベル1.使用手順(1)定義(2)オン(3)使用(4)オフ2.プレゼンテーションを使ってまずテスト用テーブルSTUDENTを作成します。脚本は以下の通りです。STU 1 AS BEGIN--表示ラベル使用、while循環declare--1.定義ラベル、名称はcur_stu cursor cur_stu is select stuno,stuname from student order by stuno;変数を定義して、ラベルから取り出したデータv_を保存します。stuno varrhar(4);v_。stuname varrhar(20);ベッギン--2.クルーズカップを開く。stu open cur ustu;3.ラベルの現在の行を取り出して変数の中にfetch cur cuuに保存します。stu into v_stuno,v_stuname;while cur_stu% found--ラベルはまだデータ行があるという意味で、ループループし続けます。印刷結果dbms_out put.PUT_LINE(v_stuno𞓜->'124124; v_stuname);--続けてラベルが指す現在の行を取り出して変数にfetch cur cuuを入れます。stu into v_stuno,v_stuname;end loop;close cur_stu;4.ラベルendを閉じますEND PROC_STU 1;(2)IF.ELESEを使用して、WHILEの代わりに循環処理します。クルーズcreate or replace PROCEURE PROC_STU 2 AS BEGIN--表示ラベル使用、if判定declare--1.定義游標、名称はcur_stu cursor cur_stu is select stuno,stuname from student order by stuno;変数を定義して、ラベルから取り出したデータv_を保存します。stuno varrhar(4);v_。stuname varrhar(20);ベッギン--2.クルーズカップを開く。stu open cur ustu;3.ラベルの現在の行を取り出して変数の中にfetch cur cuuに保存します。stu into v_stuno,v_stuname;loop if cur_stu% found then--クルーズするならcur_stuとはデータ行があります。印刷結果dbms_out put.PUT_LINE(v_stuno𞓜->'124124; v_stuname);--続けてラベルが指す現在の行を取り出して変数にfetch cur cuuを入れます。stu into v_stuno,v_stuname;else exit;end if;end loop;close cur_stu;4.ラベルendを閉じますEND PROC_STU 2;(3)FOR循環処理を使用して、遊覧タグcreate or replace PROCEURE PROC_STU 3 AS BEGIN--表示ラベル使用、for循環declareを使用します。定義遊標、名称はcur_です。stu cursor cur_stu is select stuno,stuname from student order by stuno;begin for stu in cur_stu loop dbms_out put.PUT_LINE;ループは暗黙的なチェックを行います。%notfound end loop;自動的にラベルendを閉じます。END PROC_STU 3;(4)よく使うEXIT WHENを使って、旅行ラベルcreate or replace PROCEURE PROC_STU 1_1 AS BEGIN--表示ラベル使用、exit when循環declare--1.定義ラベル、名称はcur_stu cursor cur_stu is select stuno,stuname from student order by stuno;変数を定義して、ラベルから取り出したデータv_を保存します。stuno varrhar(4);v_。stuname varrhar(20);ベッギン--2.クルーズカップを開く。stu open cur ustu;loop--3.泳いでいる現在の行を変数の中に取り出してfetcur cuuに保存します。stu into v_stuno,v_stuname;exit when cur_stu%notfound;--ラベルとはデータ行がまだあるということです。サイクルを続けます。印刷結果dbms_out put.PUT_LINE(v_stuno𞓜->'124124; v_stuname);end loop;close cur_stu;4.ラベルendを閉じますEND PROC_STU 1_1;二.隠蔽的な遊標1.プレゼンテーションを使ってcreate or replace PROCEDURE PROC_STU 4 AS BEGIN--暗黙的なツアーロゴはudate student set stuname='張燕広'where stuno='1104';更新が一致しない場合は、新たな記録if SQL%NOTFOUND then insert into student(STUNO、STUNAME、AGE、GENDER)values('1104'、'張燕広'、18、'男')を挿入する。end if;END PROC_STU 4;2.すべてのSQL文が文脈内で実行可能であることを説明します。すべてコンテキストエリアに向かっている遊標があるので、この遊標はSQLの遊標です。実際の遊標とは違って、SQLの遊標はPL/SQLで開けたり閉じたりする必要はなく、実行中にUPDATE、DELETEは自動的に開けたり閉じたりします。上記の例では、SQL%NOTFOUND游標属性によりUPDATE文の実行結果を判断し、新たな記録を挿入する必要があるかどうかを決定します。