MSSQL批量循环创建新表:根据数据库A中的表A字段的记录值为新表名并创建新表到数据库B中
http://blog.youkuaiyun.com/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
本文介绍如何使用MSSQL根据指定数据库中表的字段记录值来批量创建新表,并将新表存储到另一个数据库中。具体实现通过声明游标获取记录值,并利用这些值动态生成新表名及创建表的SQL语句。
5062

被折叠的 条评论
为什么被折叠?



