日期:2014-05-17  浏览次数:20398 次

数据库 条件语句 使用


上面是我写的存储过程  里面使用  if 条件语句 

下面图片是运行时报的错误。。。 





该怎么修改语句呢。。。
------解决方案--------------------
可以用case...when...then语法来实现你要求的功能,你这种写法没用过!
------解决方案--------------------
引用:
可以用case...when...then语法来实现你要求的功能,你这种写法没用过!

+1

update Man 
set TaskID=case when TaskIdd is null then @manID else TaskID end,
TaskIdd=case when (TaskID is null and TaskIdd is null) then TaskIdd else @manID end


------解决方案--------------------

------解决方案--------------------
要用case才行
------解决方案--------------------
程序块中只能使用CASE WHEN THEN,IF ELSE是包裹程序块的
CASE WHEN

UPDATE Man SET TaskId = CASE WHEN TaskId IS NULL THEN @TaskId 
     ELSE TaskId END,
   TaskIdd = CASE WHEN TaskId IS NULL THEN TaskIdd
                  ELSE CASE WHEN TaskIdd IS NULL THEN @TaskId
                            ELSE TaskIdd END END
WHERE ID = @ManId

IF ELSE

IF EXISTS (SELECT 1 FROM Man WHERE ID = @ManId AND TaskId IS NULL)
BEGIN
UPDATE MAN SET TaskId = @TaskId WHERE ID = @ManId AND TaskId IS NULL
END   
IF EXISTS (SELECT 1 FROM Man WHERE ID = @ManId AND TaskId IS NOT NULL AND TaskIdd IS NULL)
BEGIN
UPDATE Man SET TaskIdd = @TaskId WHERE ID = @ManId AND TaskId IS NOT NULL AND TaskIdd IS NULL
END