3 つのパラメーターを受け入れるストアド プロシージャを作成しました。
@row int
,@column VARCHAR(17)
,@value int
@value
パラメータに応じて異なる列を更新するため、パラメータがテキストまたは整数のいずれかを受け入れるようにし@column
ます。
お知らせ下さい
3 つのパラメーターを受け入れるストアド プロシージャを作成しました。
@row int
,@column VARCHAR(17)
,@value int
@value
パラメータに応じて異なる列を更新するため、パラメータがテキストまたは整数のいずれかを受け入れるようにし@column
ます。
お知らせ下さい
これを行わないでください。署名と名前が異なる 2 つのストアド プロシージャを作成してください。その後、パラメーターは必要なくなり、@column
各ストアド プロシージャはシンプルになり、一貫して動作します。
IF
s とCASE
es をストアド プロシージャ定義と交換することになります。プロシージャのクエリ プランは一貫して動作するため、確実にキャッシュでき、全体でほぼ同じ行数を記述できます。
渡されたパラメーターに基づいてさまざまなクエリを実行するストアド プロシージャは、発生するのを待っているパフォーマンスの問題です。
varchar パラメータを宣言してから、int を渡してキャストcast(@value as int)
を実行できます。これを行う別の方法は、2 つのパラメータを宣言し@value_int
、@value_varchar
しかし、私は@podiluskaに同意します-いくつかの設計上の問題があるように聞こえますが、本当にそれが必要ですか?