读书人

请问一个存储过程的有关问题

发布时间: 2012-02-21 16:26:23 作者: rapoo

请教一个存储过程的问题
这个存储过程是个更新查询,从外部获取参数后,检查参数是否为空串,如果为空就不更新相对应的字段,我这样写的,好像行不能哎

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

读书人网 >SQL Server

热点推荐