/*
存储过程: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 行)
*/


1万+

被折叠的 条评论
为什么被折叠?



