sql 存储过程中 用case when 替代if else

我需要把:CreatePROCEDUREdbo.sp_getStatisticInfo(@IDnvarchar(50))ASif(@ID='1')beginselect*... 我需要把:
Create PROCEDURE dbo.sp_getStatisticInfo( @ID nvarchar(50) )
AS
if(@ID='1')
begin
select * from tb_dailyCheck where f_startTime between @StartTime and dateadd(day,1,@EndTime)
end
else if(@ID='2')
begin
select * from tb_shiftCheck where f_startTime between @StartTime and dateadd(day,1,@EndTime)
end
else
begin
select * from tb_weeklyM where f_startTime between @StartTime and dateadd(day,1,@EndTime)
end
改成这样:

Create PROCEDURE dbo.sp_getStatisticInfo( @ID nvarchar(50) )
AS
Case @ID
when '1' then
begin
select * from tb_dailyCheck where f_startTime between @StartTime and dateadd(day,1,@EndTime)
end
when '2' then
begin
select * from tb_shiftCheck where f_startTime between @StartTime and dateadd(day,1,@EndTime)
end
else
begin
select * from tb_weeklyM where f_startTime between @StartTime and dateadd(day,1,@EndTime)
end
前一段是可以的,但是后一段运行的时候总是语法错误,望大虾指点啊:-)
比如下面这段,也是跑不起来的:
Create procedure Test1(@Name varchar(50))
As

Case When @Name='s' Then (print 'DName')
When @Name='d' Then (print 'did')
Else (print 'dids')
End
去掉小括号同样跑不起来
望大虾指点一二。。。
展开
 我来答
wforce
2010-05-24 · TA获得超过843个赞
知道小有建树答主
回答量:672
采纳率:0%
帮助的人:792万
展开全部
SQL中的case when 只能用在查询语句中,不能单独使用,由于每个条件查询的表都不一样,改写不能
情误肥羊
推荐于2018-03-23 · 超过26用户采纳过TA的回答
知道答主
回答量:61
采纳率:0%
帮助的人:58.5万
展开全部
不是太懂sqlserver的procedures,但是看你用case when写的这一段,貌似最后缺少一个end吧
case when的最后应该有esle ... end 吧。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
shineAndAir
2010-05-24 · 超过22用户采纳过TA的回答
知道答主
回答量:144
采纳率:0%
帮助的人:56.6万
展开全部
case 字段when 值 then else 值end
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式