我有两个视图返回相同的列,但不同的行。
我正在创建一个使用这些视图的存储过程。存储过程很大,并且跨列搜索匹配的行。
现在,我的愿望是:如果我收到一个值为 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密切相关,并且stackoverflow中的变量views\tables问题,但是我认为因为我的两个表实际上是在存储的程序这比黑客更具功能性......
问题是这样的:有没有办法设置静态变量,所以这个选择可以根据给定的参数提出不同的意见?