1

我有创建 SQL 表的列和过程的表:

DECLARE @SQLString NVARCHAR(MAX)
SELECT @SQLString =
    '
    '+ ColName + ' ' + ColType + ' '+ ColNullable + ',
    '
FROM FS_Report_Tables WHERE TableId = 0

PRINT ('CREATE TABLE '+ 'Test' + @SQLString)
EXEC ('CREATE TABLE '+ 'Test' + @SQLString)

当前代码仅在我需要全部时打印最后一列(最后没有昏迷)

数据表示例:

ColumnId    TableId ColName ColType ColNullable
1   0   A   int NOT NULL
2   0   B   int NOT NULL

如何使用来自另一个表SQLString的节点进行构建?SELECT

4

2 回答 2

1
DECLARE @SQLString NVARCHAR(MAX)
SET @SQLString = 'CREATE TABLE '+ @TableName +  
'
( '+@Column1Name+' '+@Column1DataType +' '+@Column1Nullable +') 

'

PREPARE stmt FROM @SQLString;
 EXECUTE stmt;
 DEALLOCATE PREPARE stmt;

您需要使用准备好的语句

SQL 服务器为您提供了一个存储过程sp_executesql,它将为您完成此任务

于 2013-08-22T09:21:34.367 回答
1

请试试:

DECLARE @SQLString NVARCHAR(MAX)
SELECT 
  @SQLString = COALESCE(@SQLString + ', ', '') + ColName + ' ' + ColType + ' ' + ColNullable
from 
  YourTable
select @SQLString

EXEC ('CREATE TABLE YourTableName (' + @SQLString + ')')
于 2013-08-22T09:29:37.220 回答