/*
存储过程: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
存储过程: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
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 行)
*/
(所影响的行数为 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 行)
*/