MSSQL批量循环创建新表:根据数据库A中的表A字段的记录值为新表名并创建新表到数据库B中

MSSQL批量循环创建新表:根据数据库A中的表A字段的记录值为新表名并创建新表到数据库B中

http://blog.csdn.net/aminfo/article/details/24065969

/****** 从数据库A的表A获得记录  ******/
declare cur_test cursor for SELECT Field1,Field2,Field3 FROM [数据库A].[dbo].[表A] order by Field1
declare @Field1 nvarchar(50), @Field2 nvarchar(50), @Field3 nvarchar(50)
declare @NewTable nvarchar(100)
declare @sql nvarchar(max)

open cur_test
fetch next from cur_test into @Field1,@Field2,@Field3
while  @@fetch_status=0
begin
print @Field1 + '-' + @Field2 + '-' + @Field3
/****** 待创建的新表名由获得的记录值组成  ******/
Set @NewTable = @Field1 + '-' + @Field2 + '-' + @Field3

USE [数据库B]
SET ANSI_NULLS ON
SET QUOTED_IDENTIFIER ON

SET @sql = ' 
CREATE TABLE [dbo].[' + @NewTable + '](
	[Id] [bigint] IDENTITY(1,1) NOT NULL,
	[Field1] [nvarchar](50) NULL,
	[Field2] [nvarchar](50) NULL,
	[Field3] [nvarchar](50) NULL,
 CONSTRAINT [PK_' + @NewTable + '] PRIMARY KEY CLUSTERED 
(
	[Id] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]'

/****** 执行创建新表SQL  ******/
EXEC(@sql)


fetch next from cur_test into @Field1,@Field2,@Field3
end
close cur_test
deallocate cur_test


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值