首页 新闻 会员 周边

存储过程更新方法,只更新其中一列的数据会清空别的列的数据

0
悬赏园豆:200 [已关闭问题]

我用了里面的存储过程更新方法,如果我只更新其中一列的数据,那么那些没更新的数据都给清空了,请问怎么去更新其中一列的数据,其它的数据保持不变.

canny的主页 canny | 初学一级 | 园豆:5
提问于:2010-05-19 11:37
< >
分享
其他回答(4)
0

存储过程贴出来呀?

Astar | 园豆:40805 (高人七级) | 2010-05-19 11:49
0

另外再写一个存储过程。

Hawkon | 园豆:225 (菜鸟二级) | 2010-05-19 12:25
0

很明显你的存储过程写的有问题。

在存储过程中使用类似下面的SQL语句

Update table1 set column1=N'test' --where ID=ID

这样就只会更新column1列的值,其他列不会变化

上不了岸的鱼 | 园豆:4613 (老鸟四级) | 2010-05-19 13:27
0

在存储过程中拼接SQL语句。解决思路:1、判断参数是否有值,有值拼接sql语句里,没有值不拼接。2、执行拼接后的sql语句。ok问题解决。

dotnet开发者 | 园豆:0 (初学一级) | 2010-05-19 17:56
0

说的不清楚呀,我大概猜一下你的意思,

是想用一个通用的存储过程,去做部分字段更新

那么方法就是 在存储过程里拼sql字符串,然后执行,如下

 

表tab  有 三个字段 id,a,b,c 你想更新的是 b ,现有存储过程

proc_tab_Up   参数包含 @a ,@b ,@c ,@id

@a 参

@b 参:

@c参

Declare @StrSQL NVARCHAR(500)

set @StrSQL = 'update tab set a = '+@a+',b = '+@b+' c = '+@c +' where id = '+@id
exec( @StrSQL )

如上,只想改变b值那么其它字段参数传 字段名就可以了,具体写时,注意类型转换

千羽 | 园豆:666 (小虾三级) | 2010-05-19 21:28
proc_tab_Up 参数包含 @a ,@b ,@c ,@id @a 参 @b 参: @c参 Declare @StrSQL1 NVARCHAR(500) Declare @StrSQL2 NVARCHAR(500) if @a is not null set @StrSql2=@a if @b is not null set @StrSql2=@StrSql2+@b if …… set @StrSQL1 = 'update tab set StrSql2 where id = '+@id exec( @StrSQL1 ) 具体写时,注意类型转换
支持(0) 反对(0) dotnet开发者 | 园豆:0 (初学一级) | 2010-05-20 11:39
我的意思是加一次参数的判断是否有值
支持(0) 反对(0) dotnet开发者 | 园豆:0 (初学一级) | 2010-05-20 11:40
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册