create proc [dbo].[add_column] @table varchar(100),--表名
@columns varchar(100),--字段名
@type varchar(100)--数据类型(如不设置,默认为varchar(100)) as
declare @sql varchar(3000),@type_code varchar(100) if @type=''
set @type_code='varchar(100)'
else
set @type_code=@type
set @sql='if NOT EXISTS (select a.Name as columnName
from syscolumns as a
, sysobjects as b where a.ID=b.ID
and b.Name='''+@table+'''
and a.name=''' +@columns+''')
BEGIN
alter table '+@table+' add '+@columns+' '+@type_code+'
PRINT ''字段!'+@columns+'添加成功''
END
ELSE
BEGIN
PRINT ''字段'+@columns+'已经存在!''
END '
--print @sql
exec(@sql)
go
select * from ta
exec [add_column] 'ta','col','int'
select * from ta
drop proc [add_column]
ID 列1
----------- -----
1 1,3
2 1,2,3
3 2,4,5
4 3,4,5
5 ,3,,4字段!col添加成功
ID 列1 col
----------- ----- -----------
1 1,3 NULL
2 1,2,3 NULL
3 2,4,5 NULL
4 3,4,5 NULL
5 ,3,,4 NULL
@columns varchar(100),--字段名
@type varchar(100)--数据类型(如不设置,默认为varchar(100)) as
declare @sql varchar(3000),@type_code varchar(100) if @type=''
set @type_code='varchar(100)'
else
set @type_code=@type
set @sql='if NOT EXISTS (select a.Name as columnName
from syscolumns as a
, sysobjects as b where a.ID=b.ID
and b.Name='''+@table+'''
and a.name=''' +@columns+''')
BEGIN
alter table '+@table+' add '+@columns+' '+@type_code+'
PRINT ''字段!'+@columns+'添加成功''
END
ELSE
BEGIN
PRINT ''字段'+@columns+'已经存在!''
END '
--print @sql
exec(@sql)
go
select * from ta
exec [add_column] 'ta','col','int'
select * from ta
drop proc [add_column]
ID 列1
----------- -----
1 1,3
2 1,2,3
3 2,4,5
4 3,4,5
5 ,3,,4字段!col添加成功
ID 列1 col
----------- ----- -----------
1 1,3 NULL
2 1,2,3 NULL
3 2,4,5 NULL
4 3,4,5 NULL
5 ,3,,4 NULL
解决方案 »
- 16位的36进制字符串相加的函数怎么做?
- OODB和ORDB的区别
- 包含MySql数据库操作程序打包后,放到另外一台没有安装MySql的机器上,能否工作?
- 行列转换
- ADO用Execute执行插入,删除,修改操作,怎么判断有没有成功
- 这样的存储过程怎么写?高手帮忙 谢谢
- 如何查出我的数据库服务器上的数据库中有被死锁的进程,然后KILL了他
- 请大家把我这条t-sql语句优化一下.谢谢
- 有没有做过数据上报(点对点)
- 用存储过程创建数据表的问题!
- 请教一下,数据集预览的储存过程与查询分析器的储存过程结果不一样(急,高手进)
- ····《《急急急》》_____如何建立SQL用户并给分配一个数据库 _____《《急急急》》····
搜集了大牛们的sql语句集合,希望对像我一样的菜鸟能有所帮助