用SQL动态创建表的字段

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值