实现说明:
            前台传进几个数据,从一个表中搜索出同这几个数据完全一样的一条记录! 
       要求:
           表中存在一个标记字段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  
  
  请重新写出一高效算法.

解决方案 »

  1.   

    每次返回的结果只能是一条而且is_audit=0 ,当结果集中只有一条记录且is_audit=1 时,返回error=0
      当@@rowcount=0 时返回error=-1
      当系统中存在二条完全一样且is_audit=0 时,先返回第一条且要updata is_audit=1  看到这有些绕,lz怎么确定 返回的结果只能是一条,如果多条,怎么处理,都没有交代清楚
      

  2.   

    谢谢各位,用了几下分支判断来实现了!
     首先查看表中有没有符合条件的记录
     如果没有,提示退出(无记录)
     如果有,就加上is_audit=0再查
     如果没有,提示退出(有记录,标志为真)
     如果有,返回top 1 的记录 ,并且设is_audit=1
      
     我也搞晕了!