SqlServer存储问题

1.请按如图建立该表 插入如图数据

img

2.新建存储usp_getjh ,要求通过计算,获得 "jd"(进度)字段的值
判断标准 若bz=0 限制时间小于当前 则 jd赋值“超时未完成”;若bz=0 限制时间大于等于当前 则 jd赋值“未完成”;若bz=1 完成时间小于限制时间 则 jd赋值“已完成”;若bz=1 完成时间大于限制时间 则 jd赋值“超时已完成”
注:不可单独对数据进行计算,应通过一套算法,该算法试用于所有该类型数据,不局限于此表4条数据

create PROCEDURE [usp_getjh]
AS
BEGIN
    declare r cursor for select id,bz,xzsj,wcsj from dbo.jh
    open r
    declare    @id int,@bz nvarchar(50),@xzsj date,@wcsj date
    fetch next from r into @id,@bz,@xzsj,@wcsj
    while @@FETCH_STATUS = 0
        begin
            update dbo.jh set jd = case
            when @bz=0 and @xzsj<CONVERT (date, GETDATE()) then '超时未完成'
            when @bz=0 and @xzsj>CONVERT (date, GETDATE()) then '未完成'
            when @bz=1 and @wcsj<@xzsj then '已完成'
            when @bz=1 and @wcsj>@xzsj then '超时已完成'
            end
            where id=@id
            fetch next from r into @id,@bz,@xzsj,@wcsj
        end
    close r
    deallocate r
END