日期:2014-05-17  浏览次数:20560 次

零下12度冰天雪地裸提跪求一语句
表1:table1。
只有一个字段tablename。
如下:存储每个表的表名称。供200多个表名。

tablename
a1
b2
cc1
hh1
dd2
rr1

a1,b2,cc1,...所有表的结构都是一个字段 code。如下:
a1: b2: cc1:
code code code
101010 223311 442fssd
202020 23441 1233das
30301030 123aaf 123aadd


问题来了,我要通过语句将table1里所有的表名中的code字段的第二位添加一个字符1.
也就是最终a1,b2,cc1,...变成如下:
a1 b2 cc1
code code code
1101010 2123311 4142fssd
2102020 213441 11233das
310301030 1123aaf 1123aadd

跪求。。。。。

------解决方案--------------------
引用:
Quote: 引用:

补充一下

declare @tablename varchar(50)
declare cur cursor for 
select tablename from table1
open cur
fetch next from cur into @tablename
while @@FETCH_STATUS=0
begin
declare @sql varchar(max)
set @sql='
update '+@tablename+' set code=left(code,1)+''1''+right(LEN(code)-1)'

exec @sql
fetch next from cur into @tablename
end
close cur
deallocate cur



执行的时候提示  “找不到存储过程啊“
不可能啊,这不是存储过程,只是个游标啊。
------解决方案--------------------
改成这样应该就行了:


declare @tablename varchar(50)
declare cur cursor for 
select tablename from table1
open cur
fetch next from cur into @tablename
while @@FETCH_STATUS=0
begin
declare @sql varchar(max)
set @sql='
update '+@tablename+' set code=left(code,1)+''1''+right(LEN(code)-1)'

        --加上括号
exec(@sql)
fetch next from cur into @tablename
end
close cur
deallocate cur