如有以下参数@id,@name,@password,@email,@qq
我有时候只是想更新其中的@name,@password,有时想更新@email,@qq,或者其他的参数,而不是每次都全部更新。如果没给出的参数,则不更新没给出参数的列。不是用默认去覆盖那列值,有办法么?除了判断参数是否为空,再去拼update的sql的这种方法,还有别的办法么??
我有时候只是想更新其中的@name,@password,有时想更新@email,@qq,或者其他的参数,而不是每次都全部更新。如果没给出的参数,则不更新没给出参数的列。不是用默认去覆盖那列值,有办法么?除了判断参数是否为空,再去拼update的sql的这种方法,还有别的办法么??
set id=isnull(@id,id),
name= isnull(@name,name),
email= isnull(@email,email),
QQ=isnull(@qq,,qq)
where ....
create proc proc_teex(
@id int,
@name varchar(10),
@password varchar(10) ,@email varchar(10),
@qq varchar(10)
)
begin
declare @sql varchar(5000)
set @sql =''
if(@id !='' )
begin
set @sql = ' update 表 set id ='+@id
end
if(@name !='' )
begin
set @sql = @sql+',name ='+@name
end
.................
set @sql =@sql +'where '
end