如果在SQL Server存储过程中有Else语句

时间:2014-11-14 13:26:07

标签: sql sql-server tsql stored-procedures

在SQL Server中,在.NET上,您可以将SQL语句添加到一起,因此可以使用'或'或者'和'。

我遇到了如何在SQL Server存储过程中执行此操作。

问题:

  1. 你将SQL语句添加到一起的是什么?我有一种感觉,它始于一个' c' concocations ??

  2. 我相信我已接近以下代码,以获得一个变量' SQL?

  3. 代码:

    BEGIN
        SELECT * 
        FROM TblEmployee
        WHERE 
           FirstName LIKE  '%' + LTRIM(RTRIM((@sFirstName))) + '%'   
           or
           Surname LIKE '%' + LTRIM(RTRIM((@sSurname ))) + '%'   
           and
           IF (LTRIM(RTRIM((@sOfficeBase))) = 'xyz1234') 
           and OfficeBase = LTRIM(RTRIM((@sOfficeBase)))
           ELSE
           or
           OfficeBase= LTRIM(RTRIM((@sOfficeBase)))
    END  
    

    If else in stored procedure sql server

    等类似查询

    但我有一种感觉,我在寻找错误的'题。提前致谢

2 个答案:

答案 0 :(得分:1)

where子句允许你嵌入条件逻辑 - 你不需要if / then / else,这也是一样,因为afaik,where子句中的任何SQL方言都不支持。

BEGIN
    SELECT * 
    FROM TblEmployee
    WHERE 
       FirstName LIKE  '%' + LTRIM(RTRIM((@sFirstName))) + '%'   
       or
       Surname LIKE '%' + LTRIM(RTRIM((@sSurname ))) + '%'   
       and
       (OfficeBase = 'xyz1234' 
       or
       OfficeBase= LTRIM(RTRIM((@sOfficeBase)))
END  

答案 1 :(得分:0)

我很确定您的原始查询中有一些缺少的括号。不确定为什么要将LTRIM和RTRIM添加到参数中。在黑暗中拍摄我怀疑你可以将你的查询归结为此。

SELECT * --This should be the column names actually needed, * is not good for production code
FROM TblEmployee 
WHERE 
(
    FirstName LIKE  '%' + @sFirstName + '%'   
    or
    Surname LIKE '%' + @sSurname + '%'   
)
and OfficeBase in ('xyz1234', @sOfficeBase)