There'a、動的SQLよりも、物事を行うには、ほとんどのより良い方法...テーブルは更新が動的である場合でも、列の有限数を持っています。この場合は、条件付きのSET句で、完全なUPDATE文を書く:
UPDATE MYTABLE
SET Col1 = CASE WHEN ISNULL(@Col1, '') = '' THEN Col1 ELSE @Col1 END,
Col2 = CASE WHEN ISNULL(@Col2, '') = '' THEN Col1 ELSE @Col2 END,
Col3 = CASE WHEN ISNULL(@Col3, '') = '' THEN Col1 ELSE @Col3 END,
Col4 = CASE WHEN ISNULL(@Col4, '') = '' THEN Col1 ELSE @Col4 END
WHERE Blah = 'blah'
あなたの文の正確な句は異なる場合があります - あなたはISNULL()またはCOALESCEとCASE文を置き換えることができるかもしれ()管理しやすくします。
これは、クエリがキャッシュされることを意味します。実行は高速ですが(無視されますが)、最も重要なことは、コードの読み込みとデバッグがはるかに簡単になることです。
ありがとうございます!あなたはすべて正しいです。だから誰が正しいとマークするかを選ぶのは難しい...:S – user829237