我试图根据发送到过程中的标志的值来运行更新,但它不喜欢此处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
答案 0 :(得分:3)
您将SELECT . . . CASE
与IF
混淆。您的代码看起来像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
在这种情况下更清楚。