sql中case的问题

chinesegump 2005-01-11 11:16:41
在sql中,下面的语句报语法错,是不是只能用if ...else 呀?
select case @al_djlx
when 1 then UPDATE cZC_KC_HZZ SET JHSL=JHSL+@lde_sl,JHJE=JHJE+@lde_cbje,JJ=@ade_cbj2,
BQSL=BQSL+@lde_sl
where spnm=@al_spnm and bmnm=@al_bmnm and jzrq=@al_jzrq and jzsj=@al_jzsj
when 2 then --//领料出库单
UPDATE cZC_KC_HZZ SET CKSL=CKSL+@lde_sl,CKJE=CKJE+@lde_cbje,
BQSL=BQSL - @lde_sl
where spnm=@al_spnm and bmnm=@al_bmnm and jzrq=@al_jzrq and jzsj=@al_jzsj
set @lde_sl=-@lde_sl
when 3 then --//领料归还单
UPDATE cZC_KC_HZZ SET RKSL=RKSL+@lde_sl,RKJE=RKJE+@lde_cbje,
BQSL=BQSL+@lde_sl
where spnm=@al_spnm and bmnm=@al_bmnm and jzrq=@al_jzrq and jzsj=@al_jzsj
when 4 then --//盘点报废单
UPDATE cZC_KC_HZZ SET SYSL=SYSL+@lde_sl,SYJE=SYJE+@lde_cbje,
BQSL=BQSL - @lde_sl
where spnm=@al_spnm and bmnm=@al_bmnm and jzrq=@al_jzrq and jzsj=@al_jzsj
set @lde_sl=-@lde_sl
when 5 then --//盘点
UPDATE cZC_KC_HZZ SET SYSL=SYSL+@lde_sl,SYJE=SYJE+@lde_cbje,
BQSL=BQSL - @lde_sl
where spnm=@al_spnm and bmnm=@al_bmnm and jzrq=@al_jzrq and jzsj=@al_jzsj
set @lde_sl=-@lde_sl
when 6 then --//订货单
UPDATE cZC_KC_HZZ SET DHSL=DHSL+@lde_sl
where spnm=@al_spnm and bmnm=@al_bmnm and jzrq=@al_jzrq and jzsj=@al_jzsj
set @lde_sl=0
end

...全文
237 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
heyixiang 2005-01-11
  • 打赏
  • 举报
回复
CASE 函数包含:

CASE 关键字。
需要转换的列名称。
指定要搜索的表达式的 WHEN 子句和指定要替换它们的表达式的 THEN 子句。
END 关键字。
可选的、定义 CASE 函数别名的 AS 子句。



注意是“替换”
zhangyanxxxx 2005-01-11
  • 打赏
  • 举报
回复
up
long_205 2005-01-11
  • 打赏
  • 举报
回复
declare @i int
set @i=1
update ftbak set gdname= case when @i=1 then 'bbb' else 'aaa' end

didoleo 2005-01-11
  • 打赏
  • 举报
回复
--你是不是想这个样子?
declare @i int
set @i=1
update ftbak set gdname= case when @i=1 then 'bbb' else 'aaa' end
chinesegump 2005-01-11
  • 打赏
  • 举报
回复
呵呵,只是想确认一下可不可以这样用的
谢谢大家的讨论,
广告之后马上结贴~
子陌红尘 2005-01-11
  • 打赏
  • 举报
回复
这样的SQL块代码,用case ... when ... 即使可以实现,也是舍近求远
同意pbsql(风云) ,楼主还是用if ... else ... 吧
tonny_yang 2005-01-11
  • 打赏
  • 举报
回复
把那些update语句用一个字符串变量存起来,执行完case以后再执行这个字符串的update操作不行吗?为什么一定要在case里面执行?
子陌红尘 2005-01-11
  • 打赏
  • 举报
回复
SQL 语法中的 case ... when 不是这么用的。
pbsql 2005-01-11
  • 打赏
  • 举报
回复
用if else吧
chinesegump 2005-01-11
  • 打赏
  • 举报
回复
up一下~
通过慢sql分析的学习,了解什么是慢sql,以及慢SQL会引起那些性能问题。清楚慢sql日志的设置,然后再通过慢sql分析工具的学习,清楚慢sql分析的步骤和流程。慢sql分析工具:mysqldumpslow工具、explain工具、profile工具、Optimizer Trace工具。 提供课程所使用的sql语句。 课程内容:第一章:课程简介1、课程介绍2、课程大纲 第二章:慢sql简介1、慢sql简介2、慢sql会引起的问题 第三章:慢日志的设置1、慢sql的分析流程2、慢日志参数理解3、慢日志参数设置:第1种方式:my.ini文件设置4、慢日志参数设置:第2种方式:sql脚本设置5、慢日志参数设置-效果验证 第四章:如何发现慢sql1、如何发现慢sql:第1种方式:慢日志文件2、如何发现慢sql:第2种方式:mysql库的slow_log表 第五章:慢sql分析工具1、慢sql提取-mysqldumpslow工具-使用方法2、慢sql提取-mysqldumpslow工具-操作实战3、慢sql的执行计划分析-explain分析-执行计划结果说明4、慢sql的执行计划分析-explain分析-索引介绍+type类型举例5、慢sql的资源开销分析-profile分析-分析步骤6、慢sql的资源开销分析-profile分析-show profile执行阶段说明7、慢sql的资源开销分析-profile分析-完整列表说明+操作实战8、慢sql的跟踪分析-Optimizer Trace分析-分析步骤9、慢sql的跟踪分析-Optimizer Trace表的介绍10、索引失效场景举例 第六章:慢日志清理1、慢日志清理

34,575

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧