修改某表所有字段的值

/*
 存储过程:up_Update
 作用:将指定表内满足条件的行所有字段值更改为统一数据
 必选参数:tableName,newValue
 可选参数:where 
 作者Email:loworth@163.com
*/

CREATE   PROC  up_Update
(
@tableName   VARCHAR ( 100 ), -- 要修改的表名
@newValue   VARCHAR ( 100 ), -- 要修改为的新字段
@where   VARCHAR ( 200 ) = ' 1=1 ' -- 条件
)
AS
BEGIN
DECLARE   @SQL   VARCHAR ( 8000 )
SET   @SQL = ''
SELECT   @SQL = @SQL + [ name ] + ' = ''' + @newValue + ''' , '   FROM   [ syscolumns ]   where   object_name (id) = @tableName
SET   @SQL = LEFT ( @SQL , LEN ( @SQL ) - 1 )
EXEC ( ' UPDATE  ' + @tableName + '  SET  ' + @SQL + '  WHERE  ' + @where )
END
GO
 
-- 建立测试用表 
IF   OBJECT_ID ( ' TESTB ' IS   NOT   NULL
 
DROP   TABLE  TESTB 
CREATE   TABLE  TESTB(A  int ,B  INT ,C  VARCHAR ( 5 ))  GO
 
-- 插入一些数据 
INSERT   INTO  TESTB 
SELECT   ' 0 ' , ' 0 ' , ' 0 '   UNION   ALL  
SELECT   ' 1 ' , ' 11 ' , ' 111 '   UNION   ALL
SELECT   ' 2 ' , ' 22 ' , ' 222 '   UNION   ALL  
SELECT   ' 3 ' , ' 33 ' , ' 333 '   UNION   ALL  
SELECT   ' 4 ' , ' 44 ' , ' 444 '   GO  
-- 开始测试 
SELECT   *   from  TESTB -- 查看原表内数据 
exec  up_update  ' testb ' , ' 10 ' , ' [a]= '' 4 ''' -- 将字段a为4的行所有字段改为10 
SELECT   *   from  TESTB -- 查看改后结果 
exec  up_update  ' testb ' , ' 10 ' -- 将表内所有行的所有字段改为10 
SELECT   *   from  TESTB -- 查看改后结果 
DROP   TABLE  TESTB -- 删除测试用表 
GO  

/*
(所影响的行数为 5 行)

A           B           C     
----------- ----------- ----- 
0           0           0
1           11          111
2           22          222
3           33          333
4           44          444

(所影响的行数为 5 行)


(所影响的行数为 1 行)

A           B           C     
----------- ----------- ----- 
0           0           0
1           11          111
2           22          222
3           33          333
10          10          10

(所影响的行数为 5 行)


(所影响的行数为 5 行)

A           B           C     
----------- ----------- ----- 
10          10          10
10          10          10
10          10          10
10          10          10
10          10          10

(所影响的行数为 5 行)
*/
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值