init
This commit is contained in:
42
【練習問題】ストアドプロシージャ/04-ProcTraining.sql
Normal file
42
【練習問題】ストアドプロシージャ/04-ProcTraining.sql
Normal file
@@ -0,0 +1,42 @@
|
||||
DELIMITER //
|
||||
/*
|
||||
**********************************************
|
||||
【Question】
|
||||
以下のSQLは社員IDの欠番を一時テーブルに登録するプロシージャの作成途中です。
|
||||
以下のルールに従ってプロシージャを完成させてください。
|
||||
|
||||
例)
|
||||
10000 山田
|
||||
10001 髙橋
|
||||
10004 佐藤
|
||||
|
||||
となっていた場合は、欠番は
|
||||
10002, 10003
|
||||
となる
|
||||
***********************************************
|
||||
*/
|
||||
|
||||
DROP PROCEDURE IF EXISTS search_missing_num;
|
||||
CREATE PROCEDURE search_missing_num()
|
||||
BEGIN
|
||||
# 変数の定義
|
||||
# 現在登録されているIDを取得するカーソルを定義する
|
||||
DECLARE empIdCursor CURSOR FOR
|
||||
SELECT id_employee FROM employee ORDER BY id_employee;
|
||||
|
||||
# 欠番IDを保管しておく一時テーブルを作成する
|
||||
DROP TABLE IF EXISTS tmpTable;
|
||||
CREATE TABLE tmpTable (missingId INT PRIMARY KEY);
|
||||
|
||||
# カーソルをオープンする
|
||||
|
||||
# 登録されているID一覧を1レコードづつ読み込む
|
||||
|
||||
# 最初の1行以外であった場合は、現在処理中のIDがプールされているIDの+1かどうかを判定
|
||||
|
||||
# カーソルのクローズ
|
||||
|
||||
# ここまででコミット
|
||||
COMMIT;
|
||||
END;
|
||||
//
|
||||
Reference in New Issue
Block a user