42 lines
1.2 KiB
SQL
42 lines
1.2 KiB
SQL
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;
|
||
// |