1

私のSQL Server 2008場合stored procedure、パラメータが多数あります。

それらの最初の部分はすべての呼び出しで使用され、2番目の部分のパラメーターはめったに使用されません。また、ロジックを2つの異なるストアドプロシージャに移動することはできません。

classこのすべてのパラメーターをまたはにカプセル化し、structそれをストアドプロシージャパラメーターとして渡す方法はありますか?

使用できますかSQL CLR。他の方法はありますか?

4

3 に答える 3

4

テーブル値パラメータを試しましたか?

実際、t-SQLで効果的かつ簡単に実行できるものにはCLR関数を使用しません。たとえば、前回CLR関数を使用したのは、t-SQLではかなり難しいと感じた複雑な正規表現に基づいて列を更新するためのものです。

于 2010-03-22T19:09:09.613 に答える
2

各パラメータの値を指定する必要があることが懸念されているようです。あまり使用されないパラメーターにデフォルト値を割り当てるだけでうまくいくでしょうか(したがって、procが呼び出されるたびにすべてのパラメーターを渡す必要はありません)。

CLRタイプは(XMLのように)オプションになる可能性がありますが、そのルートをたどるのが良い考えかどうかはわかりません。

于 2010-03-22T19:12:14.737 に答える
0

パラメータの量がアプリケーションで問題を引き起こしている場合は、次の2つの方法のいずれかを試すことができます。

1)すべてのパラメーターデータを含むXMLデータ型の単一パラメーターを渡します。次に、必要なものを解析できます。xml(Transact-SQL)を参照してください。

2)テーブルパラメータを作成します。テーブル値パラメータ(データベースエンジン)を参照してください。テーブルは次のとおりです。

ParameterName sysname
DataValue     sql_variant

これらの方法のいずれかを使用すると、それらを再度使用するために、ローカル変数に展開する必要があります。

于 2010-03-22T19:41:19.890 に答える