SQL - SWITCH CASE中的UPDATE

时间:2016-03-09 17:13:35

标签: sql-server tsql stored-procedures sql-update

我试图根据发送到过程中的标志的值来运行更新,但它不喜欢此处UPDATE语句的语法。它有什么问题?

CREATE PROC [dbo].[TestProc]
    @ID int,
    @GET_COUNT bit
AS
BEGIN
    SELECT
        CASE 
           WHEN @GET_COUNT = 1  
             THEN (SELECT COUNT(*) FROM  [ORDERS]EMPLOYEE_ID = @ID)
           WHEN @GET_COUNT = 0  
             THEN UPDATE ORDERS SET EMPLOYEE_ID = null WHERE EMPLOYEE_ID = @ID
       END
GO

1 个答案:

答案 0 :(得分:3)

您将SELECT . . . CASEIF混淆。您的代码看起来像T-SQL,所以这可能是您的意图:

IF @GET_COUNT = 1
BEGIN
    SELECT COUNT(*) FROM  [ORDERS] EMPLOYEE_ID = @ID;
END;
ELSE IF @GET_COUNT = 0 
BEGIN
    UPDATE ORDERS SET EMPLOYEE_ID = null WHERE EMPLOYEE_ID = @ID
END;

某些SQL脚本语言确实使用CASE进行控制流以及表达式计算。但是,我认为IF在这种情况下更清楚。