0


0

パラメータ 'prmtr’を取得する200行のストアドプロシージャがあります。

私のやりたいことは、パラメータに従って、ストアドプロシージャに "sql part"を追加することです。

例:

SELECT A. * FROM(SELECT * FROM table1)A

IF(私のパラメータ)= a

左結合(SELECT * FROM table2)B A. A.ID = B.ID

2 回答


2


あなたはこれのようにそれをすることができます

SELECT A. * FROM(SELECT * FROM table1)A左ジョイン(SELECT * FROM table2)B @prmt = 'A' AND A.ID = B.ID


1


このようにクエリを変更することはできません - したがって、2つの選択肢があります。

  • SPROCに2つの別々のクエリがある(各ブランチに1つ) - 2つでも構いませんが、より複雑な組み合わせにはあまり適していません。

  • 動的SQLを使用します。すなわち varchar(4000)`でクエリを構築し、それを呼び出すには `sp_ExecuteSQL`を使用してください。かなり明らかにあなたは余分な ` LEFT JOIN …​ '`などを含むように_string_を変更することができます。

とは言っても、私は_一般的には常に同じスキーマを返す単一のSPROCを好みます。パラメータに基づいて列を変更すると、ほとんどのORMツールと完全に一致しません。 見て何か