注册 登录
编程论坛 SQL Server论坛

存储过程不支持字符相吗??那条件怎么区别呀?晕

yzwt2004 发布于 2007-04-23 16:03, 551 次点击
CREATE proc stfd
@zid varchar(500),
@za int,
@zb int,
@zc int
as
declare @strS varchar(5000)
begin
set @strS='update info set za='+cast(@za as varchar)
begin
if @zb != ''
set @strS=@strS+', zb= '+cast(@zb as varchar)
end
begin
if @zc != ''
set @strS=@strS+', zc= '+cast(@zc as varchar)
end
set @strS=@strS+' where id in ('+@zid+')'
end
exec (@strS)
go


以上只有za字段能改变,zb,zc里的值怎么又不变,晕,但是,下边这种也能变:
CREATE proc stfd
@zid varchar(500),
@za int,
@zb int,
@zc int
as
declare @strS varchar(5000)
begin
set @strS='update info set za='+cast(@za as varchar)
begin
if @zb != '' 去掉这行,那这时zb也能改变了
set @strS=@strS+', zb= '+cast(@zb as varchar)
end
begin
if @zc != ''
set @strS=@strS+', zc= '+cast(@zc as varchar)
end
set @strS=@strS+' where id in ('+@zid+')'
end
exec (@strS)
go

我用个if 来区别这没有错呀,晕
1 回复
#2
xiyou4192007-04-23 22:25
晕死了,
你没有给存储过程传递参数,还想要ab,ac改变啊.
默认的@za,@zb,@zc,@zid都是空的,你看看你的if条件是什么~~~~~~~~
1