解答例 - 実習課題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;

