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