求一SQL算法
实现说明:
前台传进几个数据,从一个表中搜索出同这几个数据完全一样的一条记录!
要求:
表中存在一个标记字段is_audit ,当通过传入的数据搜索时,结果集中存在记录有可能is_audit=0
or is_audit=1.
每次返回的结果只能是一条而且is_audit=0 ,当结果集中只有一条记录且is_audit=1 时,返回error=0
当@@rowcount=0 时返回error=-1
当系统中存在二条完全一样且is_audit=0 时,先返回第一条且要updata is_audit=1
select @prod_no=m.co_no
from t_PaperCO m
where
m.qty=@qty
and m.art_id=@art_id
and m.csize_l=@csize_l
and m.csize_w=@csize_w
and m.cust_id=@cust_id
and m.size_yx1=@yx1
and m.size_yx2=@yx2
and m.size_yx3=@yx3
and m.size_yx4=@yx4
and m.size_yx5=@yx5
and m.yx_id=@press
and convert(char(10),m.co_date,111) >convert(char(10),dateadd(dd,-5,getDate()),111)
if @@rowcount<1 --如果没有订单就提示并退出
begin
set @errno='-1'
goto _error
end
select top 1 @prod_no=co_no from t_PaperCO
where @prod_no=co_no and convert(char(10),co_date,111) >convert(char(10),dateadd(dd,-5,getDate()),111)
and is_audit='0'
if @@rowcount<1 --此单审核了
begin
set @errno='0'
goto _error
end
update t_PaperCO set is_audit='1',auditor=@user_name,audit_date=getdate() where co_no=@prod_no and is_audit='0'
_exit:
set nocount off
return 0
_error:
set nocount off
return 1
请重新写出一高效算法.
------解决方案--------------------
没看懂,大概是写存储过程做几个分支判断吧。
------解决方案--------------------每次返回的结果只能是一条而且is_audit=0 ,当结果集中只有一条记录且is_audit=1 时,返回error=0
当@@rowcount=0 时返回error=-1
当系统中存在二条完全一样且is_audit=0 时,先返回第一条且要updata is_audit=1
看到这有些绕,lz怎么确定 返回的结果只能是一条,如果多条,怎么处理,都没有交代清楚
------解决方案--------------------直接给出表结构、数据和想要的结果。光看你的需求,很糊涂。。。