修改某表所有字段的值

/*
 存储过程: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 行)
*/
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值