我从变量传递了两个值:
@F_START_DATE_DT VARCHAR(50)
@F_END_DATE_DT VARCHAR(50)
我还有其他参数声明:
DECLARE @sSQL NVARCHAR(4000)
我想检查前两个变量是否为空并执行类似但正确的操作:
SELECT CASE WHEN @F_START_DATE_DT OR @F_END_DATE_DT IS NULL THEN
SET @sSQL = 'select * from test_sql1'
ELSE
SET @sSQL = 'select * from test_sql2'
END
答案 0 :(得分:3)
这样的东西就足够了。
IF @F_START_DATE_DT IS NULL OR @F_END_DATE_DT IS NULL
BEGIN
SET @sSQL = 'SELECT * FROM test_sql1'
END
ELSE
BEGIN
SET @sSQL = 'SELECT * FROM test_sql2'
END
答案 1 :(得分:2)
您需要使用:
SELECT
@sSQL = CASE
WHEN @F_START_DATE_DT IS NULL OR @F_END_DATE_DT IS NULL
THEN 'select * from test_sql1'
ELSE 'select * from test_sql2'
END
T-SQL中的 CASE
是表达式 - 它返回几个可能值中的一个。 NOT 等同于C#中的switch {....}
语句(或其他编程语言中的等效语句) - 它不一个流控制语句。< / p>
所以基本上你需要定义你的案例条件,然后从CASE
返回一个或另一个值。