1)在SQL Server中,我有存储过程,它与多个表连接。 2)在那里,UserMaster,RoleMaster和UserType表就在那里 3)Role Master将具有以下角色RoleX,RoleY和RoleZ 4)在User type master中,我们只有Role1的Type1和Type2等用户类型值(根据要求) 5)现在在用户表中我有n个用户,并且他们与上述任何一个角色相关联,并且只针对RoleZ,他们可能与任何一个用户类型相关联
问题: 现在在GUI中,我将获得具有角色和用户类型的用户过滤器,并且他们将为过滤器发送多个角色,如果他们为RoleZ应用过滤器,那么只有他们将提供usertype过滤器,如何编写查询以获取这种情况的记录
请尽快给予帮助
答案 0 :(得分:0)
参数(过滤条件)必须是变量,动态查询的使用可能会有所帮助。
下面是一个参数(过滤条件)的例子。
if(@ param1不为null) 然后 开始 声明@var varchar(max)='从tablename中选择*,其中columnname =' + @ param1 EXEC(@var) 端
if(@ param1不为null且@param2不为null) 然后 开始 声明@var varchar(max)='从tablename中选择*,其中columnname1 =' + @ param1 +'和columnname2 =' + @ param2 EXEC(@var) 端
必须根据您的要求进行必要的转换,并且@var变量的赋值应根据参数动态变化。
答案 1 :(得分:0)
您可以检查If ..否则在存储过程中保持简单。
If(@usertype is not null)
Begin
//query for user type
Else
//query for role only
End
这可以帮助你入门
https://docs.microsoft.com/en-us/sql/t-sql/language-elements/if-else-transact-sql