如何向SQL Server 2005 数据库DB的所有表中插入新的列A(首先判断A是不是已经存在),求考虑全面的语句 5

declare@countCreateTimeint,@countUpdateTimeint,@tabvarchar(100)DECLAREMy_CursorCURSOR... declare @countCreateTime int ,@countUpdateTime int,@tab varchar(100)
DECLARE My_Cursor CURSOR --定义游标
FOR (Select TABLE_NAME FROM DB.INFORMATION_SCHEMA.TABLES Where TABLE_TYPE='BASE TABLE') --查出需要的集合放到游标中
OPEN My_Cursor; --打开游标
FETCH NEXT FROM My_Cursor INTO @tab; --读取第一行数据
WHILE @@FETCH_STATUS = 0
BEGIN
PRINT @tab;
select @countCreateTime=count(*) from syscolumns where id=object_id(@tab) and name='CreateTime'
select @countUpdateTime=count(*) from syscolumns where id=object_id(@tab) and name='UpdateTime'
if(@countCreateTime =0)
begin
print @tab
exec('alter table '+ @tab +' add CreateTime datetime')
end
if(@countUpdateTime =0)
begin
print @tab
exec('alter table '+ @tab + ' add UpdateTime datetime')
end
FETCH NEXT FROM My_Cursor INTO @tab; --读取下一行数据
END
CLOSE My_Cursor; --关闭游标
DEALLOCATE My_Cursor; --释放游标
GO

上面是我成功的,但数据库中有User表
展开
 我来答
suetrain
2013-01-29 · TA获得超过178个赞
知道小有建树答主
回答量:244
采纳率:100%
帮助的人:186万
展开全部
第一步用select name from sysobjects获取数据放到游标cTest中

第二步,循环cTest,利用下面的语句获取某个表中是否存在字段A
select c.Name
from sysobjects o,syscolumns c
where o.id=c.id
and o.type='U'
and o.Name=cTest中的Name
and c.Name='A'

如果存在就跳过,不存在就执行增加字段A的sql语句
kuer200906
2013-01-29 · TA获得超过812个赞
知道小有建树答主
回答量:263
采纳率:0%
帮助的人:118万
展开全部
你是要搞破坏吗?否则有什么意义
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式