SQL文でのプログラミングに最初は戸惑い、悩みながらも
自信を持ってSQL文のコードが書けるようになった頃、
次のステップとしてストアドプロシージャーでの記述を任された人も多いと思います。
見た目はSQLのコーディングと変わらずに進むと思いがちですが
思わぬ所に落とし穴があったりします。
今回はストアドプロシージャーの基礎の"き"について書きたいと思います。
まず、当たり前すぎて見落としがちなのが
引数の設定です。
書き方は以下のようになります。
@vsYear nchar(4) -- 年
, @vsMonth nchar(2) -- 月
, @vsDay nchar(2) -- 日
, @vsStoreCode nvarchar(10) = '’ -- 店舗コード
, @vsSearchKey nvarchar(max) -- 検索Key
)
ここで肝に銘じてもらいたいのが以下の2点
1:Nullが渡らないようにする
2:文字数を必ず設定をする
1に関しては
VBでの記述と違い
Null項目が途中で結合されると
結果がNULLになってしまい
どこが原因で動かないのか、つかめなくなります。
そこで、NULLが渡されそうな個所は
ISNULL(@vsStoreCode, '') というように
条件文で場合分けを行うか
パラメータに必ず=''を書きましょう。
2に関しては
もしも値を設定をきちんと行わないと途中で文字列が切れてしまうという現象があるので
仕様書と見比べる必要があります。
また、文字列の長さがどうしても予想できない場合には
varchar(max)これでOKです。