sql-server - 有关 SQL SERVER 存储过程中 IF 的帮助

标签 sql-server tsql stored-procedures

任何人都可以帮助我在 sql server 的存储过程中构造 IF。

基本上我有一个简单的存储过程,但我现在需要传递一个新的输入参数,根据它是否为 true,我传递值 D,如果为 false,我传递值 A。但更改是在中间子查询..让我解释一下...这是存储过程。基本上,如果我为 ReturnOldStatus 发送 True,我会执行子查询 ItemStatus='D',如果它为 false,则我传入 ItemStatus='A'

CREATE PROCEDURE [dbo].[MyTempStoredProc]
(
 @IdOffice                                 Int,
 @ReturnOldStatus                           bit
)
AS
BEGIN
   SET NOCOUNT ON;
   SELECT * FROM Offices

   WHERE
      IdOffice = @IdOffice  

      AND (V.OffType NOT IN (
                        SELECT *  FROM MiscOff 
                        WHERE
ItemStatus= 'D') // This needs to be ItemStatus ='A' if FALSE is passed in on the input param

有什么想法吗?

谢谢

最佳答案

我会这样解决:

    declare @itemStatus varchar(1);
    if (@inputParam = 'FALSE')
    begin
        set @itemStatus = 'A'
    end
    else
        set @itemStatus = 'D'

   SELECT * FROM Offices
   WHERE
          IdOffice = @IdOffice      
          AND (V.OffType NOT IN (
                   SELECT *  FROM MiscOff 
                   WHERE ItemStatus= @itemStatus) 
              )

T-Sql 不是我的母语,因此其中可能存在错误...

关于sql-server - 有关 SQL SERVER 存储过程中 IF 的帮助,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/845791/

相关文章:

sql - 将两个表与第一个表中的条件进行 UNION

sql-server - SSIS:如果其他在派生列表达式中

sql - 估计的子树成本大幅下降,糟糕的优化

sql - 如何知道区域表中的父区域级别名称?

sql - 所需的结果行数作为存储过程中的参数

c# - 更新空行,该行没有任何唯一信息

sql-server - 如何为已更改名称的 SQL Server 创建别名

sql - T-SQL 中带有 PIVOT 命令的 GROUP BY 语句

mysql - 存储过程超时

c# - Entity Framework Core 2 中带有输出参数的 Exec 存储过程