au PAY マーケット

PL/SQL-Lesson4

★★★ Lesson 4 ★★★

PL/SQL-Oracle 入門
PL/SQL
SELECT…INTO…FROM文

複数の値を代入できるSELECT…INTO…FROM文

PL/SQLの中でのみ使える特別な「SELECT…INTO…FROM」文の構文は次の通りです。

  SELECT 列の名前 INTO 変数の名前 FROM 表の名前

通常のSELECT文の列の名前とFROM句の間に、キーワードとなるINTOを入れて変数名を列挙します。複数の列を取り出す場合は、次のように列と変数を複数列挙します。

  SELECT 列1, 列2, 列3, …列n INTO 変数1, 変数2, 変数3, …変数n FROM 表の名前

この時、列1の値は変数1へ、列2の値は変数2へ、という具合に、列挙した列名の順序と変数の順序が対応します。
「SELECT…INTO…FROM」文は、必ず一行のデータを戻さなくてはなりません。多くても少なくてもエラーが発生します。


取り出したデータを1行ずつ扱うカーソル

PL/SQLには、複数行にわたるデータを処理するための仕組みとして、「カーソル」が用意されています。
PL/SQLで扱うカーソルは、データベースから取り出されたデータのうち、操作対象とする行を表すものです。
PL/SQLでは、カーソルを用いることによりSELECT文で取り出された結果に対して操作対象となる行を指定し、1行ずつ処理していくことができます。
一時表とは、通常の表と同様にデータを格納するためのテーブルのことです。ただし、通常の表と異なっているのは、表に格納されているデータを他のセッションと共有できないという点です。
「CREATE TABLE GLOBAL TEMPORARY TABLE…」というように、表を作成するCREATE TABLE文に「GLOBAL TEMPORARY」というキーワードを用いるほかは、表を定義する部分に違いはありません。ただし、表を作成する表領域は一時表領域に限られるという点は知っておく必要があります。
また、一時表に格納したデータは、セッション単位あるいはトランザクション単位で自動的に消去されます。デフォルトはトランザクション単位で、この場合はコミットまたはロールバックを行った時点でデータが消去されます。セッション単位の場合は、ログアウトした時点でデータが消去されます。

カーソル処理の手順
カーソルを使って複数行にわたるSELECT文の結果を処理する方法を紹介します。手順は、大きく6つのステップで構成されます。
手順1:カーソルの宣言

  CURSOR カーソルの名称 IS SELECT文;

手順2:データ格納用変数の宣言

  変数名 カーソルの名称 %ROWTYPE;

手順3:問い合わせの実行

  OPEN カーソルの名称;

手順4:結果の抽出

  FETCH カーソルの名称 INTO 変数名;

手順5:終了判定

  

手順6:問い合わせ結果の解放

  CLOSE カーソルの名称;

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
17
18
19
DECLARE
wk_userno user.userno%TYPE;
wk_username user.username%TYPE;
wk_password user.password%TYPE;
BEGIN
 SELECT
  userno,
  username,
  password
 INTO
  wk_userno,
  wk_username,
  wk_password
 FROM user;
 INSERT INTO user2(userno, username, password)
 VALUES(wk_userno, wk_username, wk_password);
 COMMIT;
END;
/
                              


只要你认真去学,你一定能学会的,下一课继续加油哦!

如果你觉得这个网站对学习有帮助,一定要跟亲朋好友分享哦!


Lesson3 Lesson5

前の記事

PL/SQL-Lesson3

次の記事

〜んばかりに
ショップチャンネル