if exists (select * from dbo.sysobjects where id = object_id(N'[df_fltj]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [df_fltj]
set nocount on
declare @cur cursor
set @cur = cursor for
select dm,tp from bm_base --where ...
--你的 bm_base 最好能建2个字段,dm,tp,
--dm 为字段名称,tp 为类型和其他,如果要再细分,还可以加可否为NULL,以及其他
--如,dm: WorkID ,tp: nvarchar (50) not null
--如果你用一个字段dm的话,dm就必须如此模式 WorkID nvarchar(50) not null
--你自己看着办吧
declare @fname nvarchar(255),@type nvarchar(255),@sql nvarchar(2000)
declare @i int
open @cur
set @i =0
set @sql ='CREATE TABLE [df_fltj] ('
FETCH NEXT FROM @cur INTO @fname,@type
WHILE @@FETCH_STATUS = 0
BEGIN
if @i >0
set @sql = @sql +','
set @sql = @sql + @fname + ' ' +@type + ','
set @i =@i+1
FETCH NEXT FROM @cur INTO @fname,@type
end
set @sql = @sql +')'
declare @rtn nvarchar(50)
if @i=0
set @rtn = 'B表未找到合适记录,无法建表!'
else
begin
if exec sp_executesql( N@sql) =0
set @rtn='已经建表'
else
set @rtn ='出错了'
end
用SQL动态创建表的字段
最新推荐文章于 2018-05-29 17:48:00 发布