有的时候,我们需要创建列是动态生成的表,这时我们就需要借助exec执行sql 语句来动态创建临时表。
--这里一定要用max,8000可能有问题
DECLARE @tmpSql VARCHAR(MAX),@CreatSql VARCHAR(max)
SELECT @tmpSql = ISNULL(@tmpSql + ' FLOAT,','') + DefectCode
FROM #tmpDefactCodes
SELECT @tmpSql
--这里一定要创建全局临时表
SELECT @CreatSql = 'CREATE TABLE ##tmpDefactTable('+@tmpsql+' FLOAT)'
PRINT @CreatSql
EXEC(@CreatSql)
SELECT * FROM ##tmpDefactTable
DROP TABLE ##tmpDefactTable