可能我没有说清楚...那个aaa并不是一个字段名,只是一个已写入的内容... 如 name sex number aaa 男 15915915912 111 女 13654875698 …… 假如很多表都有‘aaa’,我想把它全换成bbb,那要怎么做?
那你的表里的'aaa'所在的字段名称是什么?
/* funcation:将某数据库中所有表中的某个具体的字段修改为某值exec updateTable '名称','文燕专' create by:文燕专 date:2009-4-9 */create procedure updateTable @colName nvarchar(20), @colValue nvarchar(20) as begindeclare cur cursor for select name from sysobjects where type = 'u'declare @name nvarchar(20)open cur fetch next from cur into @name while @@fetch_status =0 begin if exists(select 1 from syscolumns where id = (select id from sysobjects where type = 'u' and name = @name) and name=@colName) begindeclare @sql nvarchar(4000) set @sql = ''set @sql = 'update ' + @name + ' set ' + @colName + ' = ''' + @colValue + ''''exec(@sql)end fetch next from cur into @name endclose cur deallocate curend
感谢yygyogfny...但这也太高深了吧,水平有限,看不懂耶....
這個不能直接用~~ update語句要調整一下 最好不要直接用= 用replace的方式
sp_msforeachtable 'update ? set aaa= bbb'
yygyougfny 你是不是玩武林外传啊
楼主,我专门为你量身打造的一个存储过程代码如下, create proc aa --创建存储过程aa ( @tablename varchar(50), --这个是你的表名字 @bbb varchar(50) --要把name修改成为什么 ) as begin --开始 declare @name varchar(100) --定义一个name接受你表里边的name declare @id int --定义一个id接受你表里边的id declare cursor youbiao for select @name=name,@id=id from @tablename --创建一个游标 open youbiao fetch next from youbiao into @name,@id --把查询到得name 和id 放入@name和@id中 while @@fetch_status =0 --开始循环 begin update @tablename set name=@bbb where name=@name and id=@id --修改者个表(@tablename) set name=你要修改的, fetch next from youbiao into @name,@id --循环 end close youbiao --关闭游标 deallocate youbiao --释放游标 end --结束 exec aa 第一个参数是表的名字,第二个参数是你要把name修改为什么样子, 执行者个过程的前提是你要执行的表的架构里边要有name 和id这两个字段 代码是手动写的,也创建具体数据库来进行试验,但是思路是正确的, 仅供参考
如
name sex number
aaa 男 15915915912
111 女 13654875698
……
假如很多表都有‘aaa’,我想把它全换成bbb,那要怎么做?
/*
funcation:将某数据库中所有表中的某个具体的字段修改为某值exec updateTable '名称','文燕专'
create by:文燕专
date:2009-4-9
*/create procedure updateTable
@colName nvarchar(20),
@colValue nvarchar(20)
as
begindeclare cur cursor for
select name from sysobjects where type = 'u'declare @name nvarchar(20)open cur
fetch next from cur into @name
while @@fetch_status =0
begin
if exists(select 1 from syscolumns where id = (select id from sysobjects where type = 'u' and name = @name) and name=@colName)
begindeclare @sql nvarchar(4000)
set @sql = ''set @sql = 'update ' + @name + ' set ' + @colName + ' = ''' + @colValue + ''''exec(@sql)end
fetch next from cur into @name
endclose cur
deallocate curend
這個不能直接用~~
update語句要調整一下
最好不要直接用=
用replace的方式
create proc aa --创建存储过程aa
(
@tablename varchar(50), --这个是你的表名字
@bbb varchar(50) --要把name修改成为什么
)
as
begin --开始
declare @name varchar(100) --定义一个name接受你表里边的name
declare @id int --定义一个id接受你表里边的id
declare cursor youbiao for select @name=name,@id=id from @tablename --创建一个游标
open youbiao
fetch next from youbiao into @name,@id --把查询到得name 和id 放入@name和@id中
while @@fetch_status =0 --开始循环
begin
update @tablename set name=@bbb where name=@name and id=@id --修改者个表(@tablename) set name=你要修改的,
fetch next from youbiao into @name,@id --循环
end
close youbiao --关闭游标
deallocate youbiao --释放游标
end --结束
exec aa 第一个参数是表的名字,第二个参数是你要把name修改为什么样子,
执行者个过程的前提是你要执行的表的架构里边要有name 和id这两个字段 代码是手动写的,也创建具体数据库来进行试验,但是思路是正确的,
仅供参考
然后把内容为aaa的字段值修改为bbb。
然后就结束了。
以上是思路,希望楼主能够自己写出代码出来。不断进步。