目次へ

解答例 - 実習課題4 - 13.3.ストアドプロシージャの利用

実習課題 4

販売データベースのテーブル accept_order 中のデータで、販売した製品のタイプの台数を別テーブルに書き込むストアドプロシージャを定義しなさい。

  • 製品のタイプとは、テーブル product の type 列のデータのことである。
  • ストアドプロシージャが実行されたとき、一旦テーブルの内容は破棄され、現在のデータを新しく書き込むという処理が行われる。
  • テーブルに書き込まれるデータは、通し番号、製品のタイプ及び台数である。
  • このストアドプロシージャの定義は ORACLE 上で行うものとする。

解答例

CREATE SEQUENCE summary_by_type_seq;

CREATE TABLE summary_by_type
(
  num    NUMBER PRIMARY KEY,
  type   VARCHAR(20),
  count  NUMBER
);

CREATE PROCEDURE log_summary_by_type
IS
  CURSOR order_by_type_cursor IS
    SELECT p.type, count(*) AS count
      FROM accept_order NATURAL JOIN product p
      GROUP BY p.type;
BEGIN
  DELETE FROM summary_by_type;
  FOR o IN order_by_type_cursor LOOP
    INSERT INTO summary_by_type VALUES (
      summary_by_type_seq.nextval, o.type, o.count);
  END LOOP;
END;

↑このページの先頭へ

こちらもチェック!

PR
  • XMLDB.jp