IF EXISTS 在 SWITCH 语句中
IF EXISTS in SWITCH statement
我的以下代码不起作用。我想做的是基于一些变量,我必须检查该变量的所有位字段是否为真。如果是,return true 否则 return false.
有什么建议吗?
DECLARE @var NVARCHAR(20);
IF EXISTS (SELECT variable FROM Table1 WHERE IDNO=@IDNO)
BEGIN
SELECT @var=variable FROM Table1 WHERE IDNO=@IDNO
SELECT CASE @var
WHEN 1 THEN
IF EXISTS(SELECT CheckFlag FROM Table2 INNER JOIN Table1 ON Table2.IDNO=Table1.IDNO WHERE [Check1]=1 and [Check2]=1 and [Check3]=1 and Table1.IDNO=@IDNO)
RETURN 1
ELSE
RETURN 0
WHEN 2 THEN
......
ELSE -1
END
提前致谢。
CASE WHEN
构造要求 THEN
部分后跟 expression. You cannot put statements there, such as IF
或 RETURN
。
相反,您应该在此处放置一个表达式,以便当 SELECT
语句对其求值并产生结果时,您可以使用 that 值来执行进一步声明,包括 IF
或 RETURN
.
所以你可以替换这个:
SELECT CASE @var
WHEN 1 THEN
IF EXISTS(SELECT CheckFlag FROM Table2 INNER JOIN Table1 ON Table2.IDNO=Table1.IDNO WHERE [Check1]=1 and [Check2]=1 and [Check3]=1 and Table1.IDNO=@IDNO)
RETURN 1
ELSE
RETURN 0
使用 RETURN
语句从 SELECT
获取返回值,还使用 Count
和 Sign
函数生成 0 或 1 值:
RETURN SELECT CASE @var
WHEN 1 THEN
(SELECT Sign(Count(*))
FROM Table2
INNER JOIN Table1
ON Table2.IDNO=Table1.IDNO
WHERE [Check1]=1 and [Check2]=1 and [Check3]=1 and Table1.IDNO=@IDNO)
我的以下代码不起作用。我想做的是基于一些变量,我必须检查该变量的所有位字段是否为真。如果是,return true 否则 return false.
有什么建议吗?
DECLARE @var NVARCHAR(20); IF EXISTS (SELECT variable FROM Table1 WHERE IDNO=@IDNO) BEGIN SELECT @var=variable FROM Table1 WHERE IDNO=@IDNO SELECT CASE @var WHEN 1 THEN IF EXISTS(SELECT CheckFlag FROM Table2 INNER JOIN Table1 ON Table2.IDNO=Table1.IDNO WHERE [Check1]=1 and [Check2]=1 and [Check3]=1 and Table1.IDNO=@IDNO) RETURN 1 ELSE RETURN 0 WHEN 2 THEN ...... ELSE -1 END
提前致谢。
CASE WHEN
构造要求 THEN
部分后跟 expression. You cannot put statements there, such as IF
或 RETURN
。
相反,您应该在此处放置一个表达式,以便当 SELECT
语句对其求值并产生结果时,您可以使用 that 值来执行进一步声明,包括 IF
或 RETURN
.
所以你可以替换这个:
SELECT CASE @var
WHEN 1 THEN
IF EXISTS(SELECT CheckFlag FROM Table2 INNER JOIN Table1 ON Table2.IDNO=Table1.IDNO WHERE [Check1]=1 and [Check2]=1 and [Check3]=1 and Table1.IDNO=@IDNO)
RETURN 1
ELSE
RETURN 0
使用 RETURN
语句从 SELECT
获取返回值,还使用 Count
和 Sign
函数生成 0 或 1 值:
RETURN SELECT CASE @var
WHEN 1 THEN
(SELECT Sign(Count(*))
FROM Table2
INNER JOIN Table1
ON Table2.IDNO=Table1.IDNO
WHERE [Check1]=1 and [Check2]=1 and [Check3]=1 and Table1.IDNO=@IDNO)