在表中切换选择查询案例列值

时间:2014-11-24 22:14:44

标签: sql-server authentication switch-statement

我想在我的存储过程中(在SQL Server中)执行类似的操作:参数来自winforms端(用户ID值),并且在我的存储过程中有一个选择查询控制USER ID具有Admin身份验证(管理员的授权号是666)来自Authentication表,例如2个编号用户的666授权类型为真(1)那么选择查询就像是;

SELECT * FROM TABLE

但如果2个编号用户666授权类型为false(0),那么Select查询就像;

SELECT * 
FROM TABLE 
WHERE DEPTID = @DEPID

是否可以在SQL Server中使用?

2 个答案:

答案 0 :(得分:0)

select *
from table
where exists (select top 1 1 from Auth where userid = @ID and AuthType = 666) --user is admin
or deptid = @deptid --or limit results by department

根据评论进行更新

if (select top 1 1 from Auth where UserId=@ID and AuthType=666)
begin
    select something, somethingElse
    from someTable
end
else
begin
    select something, somethingElse
    from someTable
    where DeptId = @DeptId
end

注意:如果在if / else之后只有1个命令(例如select语句),则可以跳过开始和结束语句 - 但是我通常只是为了确保一致性/易读性而使用它们 - 但是它已经失效了个人喜好/贵公司的标准。

答案 1 :(得分:0)

CREATE PROCEDURE usp_Proc
@ID VARCHAR(50)
AS
BEGIN
  SET NOCOUNT ON;

  IF EXISTS(SELECT 1 FROM [Authentication] WHERE UserID = @ID AND AuthType666 = 1)
   BEGIN
       SELECT * FROM TableName 
   END
  ELSE 
   BEGIN
      SELECT * FROM TableName WHERE <Condition>
   END

END