大家看看我这样写为什么老师报错??
create proc shenheliuc
--记录每一步审核时间
@decl int, --当前第几步
@id   int,      --修改哪一条记录
@Flag int --记录的值
as
case @decl
     when 1 then Update ph_company_inbox set firtime=getdate(),fields2=@Flag,fields1=@Flag where Ncid=@id
     when 2 then Update ph_company_inbox set sectime=getdate(),fields2=@Flag,fields1=@Flag where Ncid=@id
     when  3 then Update ph_company_inbox set thirdtime=getdate(),fields2=@Flag,fields1=@Flag where Ncid=@id
     when  4 then Update ph_company_inbox set fortime=getdate(),fields2=@Flag,fields1=@Flag where Ncid=@id
     when  5 then Update ph_company_inbox set fiftime=getdate(),fields2=@Flag,fields1=@Flag where Ncid=@id
     when  6 then Update ph_company_inbox set sixtime=getdate(),fields2=@Flag,fields1=@Flag where Ncid=@id
     when  7 then Update ph_company_inbox set servtime=getdate(),fields2=@Flag,fields1=@Flag where Ncid=@id
     when  8 then Update ph_company_inbox set eithtime=getdate(),fields2=@Flag,fields1=@Flag where Ncid=@id
     when  9 then Update ph_company_inbox set ninetime=getdate(),fields2=@Flag,fields1=@Flag where Ncid=@id
     when 10 then Update ph_company_inbox set tentime=getdate(),fields2=@Flag,fields1=@Flag where Ncid=@id
     when 11 then Update ph_company_inbox set elevtime=getdate(),fields2=@Flag,fields1=@Flag where Ncid=@id
     when 12 then Update ph_company_inbox set tlewtime=getdate(),fields2=@Flag,fields1=@Flag where Ncid=@id
     when 13 then Update ph_company_inbox set thirtime=getdate(),fields2=@Flag,fields1=@Flag where Ncid=@id
     when 14 then Update ph_company_inbox set forten=getdate(),fields2=@Flag,fields1=@Flag where Ncid=@id
     when 15 then Update ph_company_inbox set fifteen=getdate(),fields2=@Flag,fields1=@Flag where Ncid=@id
end
return

解决方案 »

  1.   


    case when不是这样用的你这种得用 if else ..
      

  2.   

    你的这个太不好理解了,至少要该为:create proc shenheliuc
    --记录每一步审核时间
    @decl int, --当前第几步
    @id int, --修改哪一条记录
    @Flag int, --记录的值
    @dt datetime
    as
      update ph_company_inbox set firtime = @dt where fields2=@Flag,fields1=@Flag where Ncid=@id and @decl(这个变量怎么搞?)
    go
      

  3.   

    建议把时间通过参数传入存储过程,不要直接在存储过程中使用getdate()
      

  4.   

    create proc shenheliuc
    --记录每一步审核时间
    @decl int, --当前第几步
    @id int, --修改哪一条记录
    @Flag int --记录的值
    as
    begin
    if @decl=1
    Update ph_company_inbox set firtime=getdate(),fields2=@Flag,fields1=@Flag where Ncid=@id
    else if @decl=2 
    Update ph_company_inbox set sectime=getdate(),fields2=@Flag,fields1=@Flag where Ncid=@id
    else if @decl=3 
     Update ph_company_inbox set thirdtime=getdate(),fields2=@Flag,fields1=@Flag where Ncid=@id 
    else if @decl=4 
     Update ph_company_inbox set fortime=getdate(),fields2=@Flag,fields1=@Flag where Ncid=@id
    else if @decl=5 
     Update ph_company_inbox set fiftime=getdate(),fields2=@Flag,fields1=@Flag where Ncid=@id
    else if @decl=6 
     Update ph_company_inbox set sixtime=getdate(),fields2=@Flag,fields1=@Flag where Ncid=@id
    else if @decl=7 
     Update ph_company_inbox set servtime=getdate(),fields2=@Flag,fields1=@Flag where Ncid=@id
    else if @decl=8 
     Update ph_company_inbox set eithtime=getdate(),fields2=@Flag,fields1=@Flag where Ncid=@id
    else if @decl=9 
     Update ph_company_inbox set ninetime=getdate(),fields2=@Flag,fields1=@Flag where Ncid=@id
    else if @decl= 10 
     Update ph_company_inbox set tentime=getdate(),fields2=@Flag,fields1=@Flag where Ncid=@id
    else if @decl= 11 
     Update ph_company_inbox set elevtime=getdate(),fields2=@Flag,fields1=@Flag where Ncid=@id 
    else if @decl= 12 
     Update ph_company_inbox set tlewtime=getdate(),fields2=@Flag,fields1=@Flag where Ncid=@id
    else if @decl= 13 
     Update ph_company_inbox set thirtime=getdate(),fields2=@Flag,fields1=@Flag where Ncid=@id 
    else if @decl= 14 
     Update ph_company_inbox set forten=getdate(),fields2=@Flag,fields1=@Flag where Ncid=@id
    else if @decl= 15 
     Update ph_company_inbox set fifteen=getdate(),fields2=@Flag,fields1=@Flag where Ncid=@id
    end 
    GO
      

  5.   

    说以下我想要实现的功能,
    create proc shenheliuc
    --记录每一步审核时间
    @decl int, --当前第几步
    @id int, --修改哪一条记录
    @Flag int --记录的值
    在这个存储过程中,我根据传入的@decl 的值来执行不同的更新语句,我不想用If else语句,用Case when  then语句该怎么写呢
      

  6.   

    换成if……else…… 楼上已给出答案