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