请教一个存储过程的问题
这个存储过程是个更新查询,从外部获取参数后,检查参数是否为空串,如果为空就不更新相对应的字段,我这样写的,好像行不能哎
CREATE PROC updateSite
@intSiteID int,
@siteName varchar(20),
@domainName varchar(30),
@tel varchar(30),
@QQ varchar(30),
@backresult varchar(20) output
as
declare @sqlStr varchar(1000),@ varchar(100)
begin
set @sqlStr= 'set tel=@tel '
if @siteName <> ' ' set @sqlStr=@sqlStr + ',sitename=@sitename '
if @domainName <> ' ' set @sqlStr=@sqlStr + ',domainname=@domainname '
if @tel <> ' ' set @sqlStr=@sqlStr + ',tel=@tel '
if @qq <> ' ' set @sqlStr=@sqlStr + ',qq=@QQ '
set @sqlStr= 'update sites ' + @sqlStr + ' where siteid=@intSiteID '
execute sp_executesql N ' @updateStr ',
N '@updateStr varchar(200) ',
@updateStr = @sqlStr
set @backresult= '修改成功! '
end
------解决方案----------------------try
CREATE PROC updateSite
@intSiteID int,
@siteName varchar(20),
@domainName varchar(30),
@tel varchar(30),
@QQ varchar(30),
@backresult varchar(20) output
as
update sites set
tel=isnull(nullif(@tel, ' '), tel),
sitename=isnull(nullif(@sitename, ' '), sitename),
domainname=isnull(nullif(@domainname, ' '), domainname),
qq=isnull(nullif(@QQ, ' '), qq)
where siteid=@intSiteID
if @@error=0
set @backresult= '修改成功! '
else
set @backresult= '修改失敗! '
go