现有一个数据表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)
这样做我将会遇到几个问题
1、如何在SQL语句中实现:判别table2中的列是否已经存在
2、如何对table2进行操作,因为列不确定。在insert语句中要写列的字段名,而我不知道table2中有哪些字段名
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)
这样做我将会遇到几个问题
1、如何在SQL语句中实现:判别table2中的列是否已经存在
2、如何对table2进行操作,因为列不确定。在insert语句中要写列的字段名,而我不知道table2中有哪些字段名
解决方案 »
- sql中怎样取某个字段的后几位
- 文件属性问题?
- 如何创建记录文件
- 感谢Linux2001提供ADSL计时器代码
- 急问:怎样改变窗口标题栏标题的颜色?在线等待
- ●●●●哪有可打印的李维的《Delphl5.x ADO/MTS/CoM+高级程序设计篇》●●●●
- 要根据图片的名字查找图片,该如何做?量不大,用Access?图片控件呢选什么?在线等待,解决在加50
- 如何将WORD文档保存在数据库中(SQL SERVER)
- 请进来看一看这个错误提示是什么意思?
- d6补丁哪有下?
- 三层Fetchondemand设置为TRUE时采用ApplyUpdate提交应用服务时没有问题
- delphi如何实现richedit带格式保存到word中?
begin
print '存在'
end
else
alter table .....
end
在对Table2进行表列操作的时候,建议你再建立一个表,保存这个表里面有哪些列,其中存储了字段名、含义、类型、长度等信息。或者通过SQL数据库本身的一些功能,获得表结构。MSSQL中可以通过sp_columns存储过程获取表结构的定义。