SQL存储过程,应用where子句

时间:2017-04-05 12:47:51

标签: sql-server where-clause

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过滤器,如何编写查询以获取这种情况的记录

请尽快给予帮助

2 个答案:

答案 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