基于sql中表中的行值创建表
我的要求是这样的 我有一个表tblDetails,其中包含关于该表的所有详细信息基于sql中表中的行值创建表,sql,sql-server,sql-server-2008,sql-server-2012,Sql,Sql Server,Sql Server 2008,Sql Server 2012,我的要求是这样的 我有一个表tblDetails,其中包含关于该表的所有详细信息 TblCol TblName ColNo ColName Type Length Sacle KeyType description 现在,我想基于tblDetails中的值创建表。这里是一个(非常)基本的示例,说明如何处理这种动态SQL。此示例不添加索引、键或任何花哨的内容—只添加一些具有数据类型的表和列,但它应该让您从正确的方向开始: DECLARE @sql NVARCHAR(MAX) DECLARE @t
TblCol TblName ColNo ColName Type Length Sacle KeyType description
现在,我想基于tblDetails中的值创建表。这里是一个(非常)基本的示例,说明如何处理这种动态SQL。此示例不添加索引、键或任何花哨的内容—只添加一些具有数据类型的表和列,但它应该让您从正确的方向开始:
DECLARE @sql NVARCHAR(MAX)
DECLARE @tblName nvarchar(255)
DECLARE tbl_cursor CURSOR LOCAL FOR
SELECT DISTINCT tblName
FROM tblDetails
ORDER BY tblName
OPEN tbl_cursor
FETCH NEXT FROM tbl_cursor INTO @tblName
--OUTER LOOP THROUGH TABLES:
WHILE @@FETCH_STATUS = 0
BEGIN
SET @sql = 'CREATE TABLE ' + @tblName + '( ';
DECLARE @colName nvarchar(255),
@type nvarchar(50),
@length nvarchar(50),
@ctr int = 0;
DECLARE col_cursor CURSOR LOCAL FOR
SELECT [colName], [Type], [Length]
FROM tblDetails
WHERE tblName = @tblName
ORDER BY ColNo
OPEN col_cursor
FETCH NEXT FROM col_cursor INTO @colName, @type, @length
--INNER LOOP THROUGH COLUMNS
WHILE @@FETCH_STATUS = 0
BEGIN
IF @ctr != 0 --if this is not the first column, prefix w/ comma
SET @sql += ', ';
SET @sql += '[' + @colName + '] ' + @type;
IF @type IN ('CHAR','VARCHAR','NCHAR','NVARCHAR','BINARY','VARBINARY') --add size if appropriate
SET @sql += '(' + @length + ')'
SET @ctr += 1;
FETCH NEXT FROM col_cursor INTO @colName, @type, @length
END --inner loop
CLOSE col_cursor
SET @sql += ')';
EXECUTE sp_executesql @sql
FETCH NEXT FROM tbl_cursor INTO @tblName
END --outer loop
CLOSE tbl_cursor
继续,什么阻止了你?需要帮助如何编写自动创建表的查询你需要连接动态sql以根据配置创建表。是的,这正是我想要的。这里是一个很好的起点。