- PR -

SQLserverのストアドでエラー処理をしたい

1
投稿者投稿内容
McLaren
ぬし
会議室デビュー日: 2002/01/15
投稿数: 784
お住まい・勤務地: 東京
投稿日時: 2004-01-28 21:35
■テーブル

テーブル名:Table01
フィールド:
s_id  オートナンバー(主キー)
d_id  int
seq  int

テーブルデータサンプル
s_id | d_id | seq
-------------------
1 | 1001 | 1
2 | 1001 | 2
3 | 1002 | 1
4 | 1002 | 2
5 | 1002 | 3



■データinsert用ストアド

Alter Procedure sp_01

(
@d_id int
)

As
INSERT INTO Table01
(
d_id,
seq
)
SELECT
@d_id,
Max( seq ) + 1
FROM Table01
WHERE ( d_id = @d_id )

return



があります。
このストアドを実行して、抽出条件 d_id の中での seq の最大値に1を足したものをinsertしています。通常はこれでうまくいっているのですが、抽出条件 d_id が一件もヒットしない場合(この場合d_id=1003など)はseqの最大値がとれずに(null?)エラーがかかります。「最大値がとれなかったときは無条件にseqに1をinsertする。。」というふうにしたいのですが、どうやればできるでしょうか。ご教授願います。
1

スキルアップ/キャリアアップ(JOB@IT)