Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 2008 用Case/If语句删除_Sql Server 2008 - Fatal编程技术网

Sql server 2008 用Case/If语句删除

Sql server 2008 用Case/If语句删除,sql-server-2008,Sql Server 2008,我有一张桌子 Table1 +-------+-----------+----------+ | EmpNo | FirstName | LastName | +-------+-----------+----------+ | 123 | Bob | Smith | | 456 | John | Smith | | 789 | Bill | Smith | +-------+-----------+----------+ 我想创建

我有一张桌子

Table1
+-------+-----------+----------+
| EmpNo | FirstName | LastName |
+-------+-----------+----------+
|   123 | Bob       | Smith    |
|   456 | John      | Smith    |
|   789 | Bill      | Smith    |
+-------+-----------+----------+
我想创建一个存储过程,根据传入的参数删除整个表或表中的一个条目

类似于

Delete from Table1
Case where @DeleteAll = 1
    Then where EmpNo is not null
Else where EmpNo = @employee

试试这个:

IF @DeleteAll = 1
BEGIN
   DELETE 
   FROM TABLE1
   WHERE EmpNo IS NOT NULL
END
ELSE
   DELETE
   FROM TABLE1
   WHERE EmpNo = @employee
;
试试这个:

IF @DeleteAll = 1
BEGIN
   DELETE 
   FROM TABLE1
   WHERE EmpNo IS NOT NULL
END
ELSE
   DELETE
   FROM TABLE1
   WHERE EmpNo = @employee
;

emp信息会是空的吗?不,我稍后会处理错误处理。emp信息会是空的吗?不,我稍后会处理错误处理。这是一个很好的方法。我将把我的答案作为使用
IF
的一个例子,但我更喜欢你的答案。这两个答案和Aaron在使用SQL Fiddle进行测试时为我删除了所有内容。忽略,这似乎是SQL Fiddle的一个怪癖。当我在我的实时环境中构建一个测试表时,它的行为是正确的。我将把我的答案作为使用
IF
的一个例子,但我更喜欢你的答案。这两个答案和Aaron在使用SQL Fiddle进行测试时为我删除了所有内容。忽略,这似乎是SQL Fiddle的一个怪癖。当我在实时环境中构建测试表时,它的行为是正确的。
Delete from Table1
where @DeleteAll = 1
   or EmpNo = @employee