基于sql中表中的行值创建表

基于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

我的要求是这样的

我有一个表tblDetails,其中包含关于该表的所有详细信息

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以根据配置创建表。是的,这正是我想要的。这里是一个很好的起点。