我已经有了用于创建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
?
答案 0 :(得分:1)
DECLARE @SQLString NVARCHAR(MAX)
SET @SQLString = 'CREATE TABLE '+ @TableName +
'
( '+@Column1Name+' '+@Column1DataType +' '+@Column1Nullable +')
'
PREPARE stmt FROM @SQLString;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
您需要使用prepared statements
SQL Server为您提供了一个存储过程sp_executesql,它将为您执行此任务
答案 1 :(得分:1)
请尝试:
DECLARE @SQLString NVARCHAR(MAX)
SELECT
@SQLString = COALESCE(@SQLString + ', ', '') + ColName + ' ' + ColType + ' ' + ColNullable
from
YourTable
select @SQLString
EXEC ('CREATE TABLE YourTableName (' + @SQLString + ')')