日期:2014-05-19  浏览次数:20486 次

往数据表插入列
现有一个数据表talbe1
ID   项目             类型         长度
1     计量单位     字符           20
2     数量             数字           4
.     ....             ....           .
.     ....             ....           .
起始时table2为
ID     书名
然后
table2将根据table1的内容动态的添加列  
ID       书名     计量单位(varchar(20))     数量(int(4))..........
我写了一段程序(有错),是动态的往table2中插入列,先要判断要插入table2中的列是否存在,
declare   @sql   varchar(2000)
set   @sql= 'alter   table   table2   add   '
select     @sql=@sql+项目名称+if   exists(Select       *       from       dbo.syscolumns       Where       Name=项目名称       And       ID=OBject_ID( '教材管理卡片编辑 '))   ' '
else   case  
when   项目类型   =   '文本型 '   then   '   varchar( '   +   rtrim(项目长度)   +   '), '
when   项目类型   =   '数字型 '   then   '   int '
end   from   table1
set   @sql=left(@sql,len(@sql))

print   @sql
exec(@sql)
上面的程序应怎样改,先判断要增加的列是否存在,然后再插入

------解决方案--------------------
declare @sql varchar(2000)
set @sql= 'alter table table2 add '
select @sql=@sql+项目名称+case when exists(Select * from dbo.syscolumns Where Name=项目名称 And ID=OBject_ID( '教材管理卡片编辑 ')) then ' '
else case
when 项目类型 = '文本型 ' then ' varchar( ' + rtrim(项目长度) + '), '
when 项目类型 = '数字型 ' then ' int '
end end from table1
set @sql=left(@sql,len(@sql))

print @sql
exec(@sql)