弱弱的问一个问题:
思路是:
1、存储过程 接受4个参数。
2、先查询一下 记录。。当符合条件的记录为1时。
3、更新 记录。否则就不更新。
请指教。谢谢。
CREATE proc test @param1 smallint ,@param2 varchar(14),@param3 smallint,@param4 Varchar(50)
as
if 
select * from comProd where flag=isnull(@param1,'')and billNO=isnull(@param2,'')and RowNO=isnull(@param3,'') =1
then  update  comProd set UDEF1= @param3 where  where flag=isnull(@param1,'')and billNO=isnull(@param2,'')and RowNO=isnull(@param4,'')GO

解决方案 »

  1.   

    CREATE proc test 
    @param1 smallint ,
    @param2 varchar(14),
    @param3 smallint,
    @param4 Varchar(50)
    as
    begin
    if  
    (select * from comProd 
    where flag=isnull(@param1,'')and billNO=isnull(@param2,'')and RowNO=isnull(@param3,'') =1)
    then   update comProd set UDEF1= @param3 where where flag=isnull(@param1,'')and billNO=isnull(@param2,'')and RowNO=isnull(@param4,'')
    else
    return
    end
    GO
      

  2.   


    create proc test @param1 smallint, @param2 varchar(14), @param3 smallint, @param4 Varchar(50)
    as
    begin
    if ((select count(1) from comProd where flag=isnull(@param1,'')and billNO=isnull(@param2,'')and RowNO=isnull(@param3,''))=1)
      update comProd 
      set UDEF1= @param3 
      where flag=isnull(@param1,'')and billNO=isnull(@param2,'')and RowNO=isnull(@param4,'')
    end
      

  3.   

    楼上的2位兄弟已经贴出来了答案。
    但是我还有2个小问题:
    1. 所有ISNULL判断都没有意义,因为你给入的参数不允许是null
    2. UDEF1应该是varchar的吧,那你为什么给入的@param3是smallint?
      

  4.   

    回复:shoppo0505。不好意思,是我写错了。应该是 更新:
     UDEF1= @param4