SQL Server中的IF条件

时间:2011-04-28 12:44:39

标签: sql sql-server database tsql

是否可以在VIEWS中使用if条件

例如

CREATE VIEW
as

  DECLARE @Count int
  SET @Count=-1
  select @Count=EmpID from EmployeeDetails where ID=200
  IF @Count=-1
  BEGIN
    SELECT * FROM TEAM1
  END
  ELSE
  BEGIN
    SELECT * FROM TEAM1
  END

4 个答案:

答案 0 :(得分:11)

你可以尝试使用UNION偷偷摸摸的东西:

SELECT {fieldlist}
FROM Table1
WHERE EXISTS(SELECT EmpID FROM EmployeeDetails WHERE ID = 200)

UNION ALL

SELECT {fieldlist}
FROM Table2
WHERE NOT EXISTS(SELECT EmpID FROM EmployeeDetails WHERE ID = 200)

此方法需要两个SELECT语句返回相同的字段集,尽管它们的源可能不同。

答案 1 :(得分:8)

视图仅允许here

中所述的select语句

如果您需要执行列值,则可以使用

SELECT
CASE WHEN COLUMN1 = 1 THEN COLUMNX ELSE COLUMNY END
FROM TABLE1

如果您的需求超过此值,您应该从表值函数而不是视图创建一个选择。

您需要的是一个简单的程序

CREATE PROCEDURE DOSOMETHING
(   
    @ID INT
)
AS
BEGIN
    IF @ID > 100
        SELECT 1 AS ID,'ME' AS NAME, GETDATE() AS VARIABLEDATECOL, NEWID() AS VARIABLEGUID
    ELSE
        SELECT 2 AS ID, 'YOU' AS NAME
END

答案 2 :(得分:2)

不,我不相信这是可能的。

您可以使用存储过程来实现此功能。

答案 3 :(得分:-1)

仅使用udf(用户定义函数) 在这里,您可以使用IF,ELSE,WHILE等。

但是当您处理数据(INSERT,UPDATE,DELETE)时,您必须使用存储过程,因为udf无法做到这一点

相关问题