我想在我的存储过程中(在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中使用?
答案 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