同じ列を返すが、行が異なる2つのビューがあります。
これらのビューを使用するストアドプロシージャを作成しています。ストアドプロシージャは大きく、列全体で一致する行を検索します。
さて、私の願いはこれです。値が0のビットパラメータを受け取った場合は、あるビューから情報を取得する必要があります。パラメータが1の場合は、別のビューから情報を取得する必要があります。
動的SQLは悪い考えであり、私が使用しているストアドプロシージャはすでに非常に複雑であることを理解しました。動的になるように再作成することはできません。
私はこれを行うことが不可能であることについても読みました:
select * from @table
テーブル名は静的である必要があり、exに渡されないためです。コードによるストアドプロシージャ。
私が達成しようとしていることは次のようなものです:
SELECT TOP(@top) subtaskid,activityid FROM
(CASE WHEN @allProjects=1 THEN view_project_all ELSE view_project_mine) v
ただし、「キーワード'CASE'の近くの構文が正しくありません。この質問は動的SQLに密接に関連していることを認識しています。また、スタックオーバーフロー全体で変数ビュー\テーブルの質問がありますが、2つのテーブルが実際にストアドにあるためだと思います。手順これはハックよりも機能的です...
質問はこれです:与えられたパラメータに従って、この1つの選択が異なるビューを要求できるように静的変数を設定する方法はありますか?