如例子般---
 
设定 在UI输入两个字段,对数据库的A和B两个字段操作要求, 1) A更新B不更新,2) A不更新B更新,3) A和B都更新。要在数据访问层进行输入SQL语句连接。如何实现,SQL语句咋样的啊  如果是一个操作就一条SQL语句,那样也可以。但是要更新10个字段或者更多,那样进行一个操作就一条SQL语句,这样的任务岂不是超级繁琐的吗,也不利于修改!!有没就一两条的SQL语句就可以全部实现的! 新手处女贴求助啦

解决方案 »

  1.   


    declare @s varchar(2),@sql nvarchar(200),@s1 varchar(20),@s2 varchar(20)
    set @s = '1'
    set @s1 ='abc'
    set @s2 ='def'
    set @sql ='update tb set (case when '+@s+'=''1'' then A when '+@s+'=''2'' then B else A end)='''+@s1+''',(case when '+@s+'!=''1'' and '+@s+'!=''2'' then B end)='+@s2+' where 条件'
    exec(@sql)
      

  2.   

    拼接sql语句,然后传过去
    根据条件拼接要更新的字段
    declare @s varchar(1000),@a varchar(10)
    set @a='aaaa'
    set @s='col1 ='''+@a+''',col2='''+@a+''''
    --这里是sql的写法,你可以用你的程序语言拼接一个这样的字符串传过去,
    数据库执行下面的语句就可以了
    --print 'update tb set '+@s+' where 1=1'--可以在这里输出你的语句验证正确性
    exec('update tb set '+@s+' where 1=1')
      

  3.   

    这是小子我自己弄的  但是因为是同一参数输入不同类型的字段进行操作,所以就不晓得任何通过数据访问层的参数与其相连接,烦啊  declare @id char(10), @name1 char(10) , @name2 char(10)  
    set @id='1' --选择编号
    set @name1='玫瑰' --输入原字段(不同的字段)
    set @name2='康乃馨' --输入新字段(必须与@name1的字段类型相同。 如 @name1可以输入节日'情人节',@name2则输入对应相同类型字段'妇女节') if ( @name1=(select k_kind from kind where k_id=@id) )       update kind set k_kind=@name2 where k_id=@id
    else 
     if ( @name1=(select k_object from kind where k_id=@id) )       update kind set k_object=@name2 where k_id=@id
    else 
    if ( @name1=(select k_festival from kind where k_id=@id) ) update kind set k_festival=@name2 where k_id=@id
       
    else 
    print'出错了'