Sql server 如何根据列号创建临时表?

Sql server 如何根据列号创建临时表?,sql-server,tsql,Sql Server,Tsql,如何根据列数创建临时表 例如,如果计数为20,则创建一个包含20列的临时表(所有列都是nvarchar类型) 如果count为10,则创建仅包含10列的临时表。如果您确实想按编写的方式执行此操作,则可以使用动态SQL,如下所示: DECLARE @ColCount int = 20 DECLARE @Ct int = 1 DECLARE @SQL nvarchar(max) = '' SET @SQL = 'CREATE TABLE #VarTemp(' WHILE @Ct < @Co

如何根据列数创建临时表

例如,如果计数为20,则创建一个包含20列的临时表(所有列都是nvarchar类型)


如果count为10,则创建仅包含10列的临时表。

如果您确实想按编写的方式执行此操作,则可以使用动态SQL,如下所示:

DECLARE @ColCount int = 20
DECLARE @Ct int = 1
DECLARE @SQL nvarchar(max) = ''

SET @SQL = 'CREATE TABLE #VarTemp('

WHILE @Ct < @ColCount+1
BEGIN
    SET @SQL += 'Col' + CAST(@Ct as nvarchar(8)) + ' nvarchar(256),'
    SET @Ct = @Ct + 1
END
SET @SQL = LEFT(@SQL, (LEN(@SQL) - 1))
SET @SQL += ')'

SELECT @SQL
DECLARE@ColCount int=20
声明@Ct int=1
声明@SQL nvarchar(最大值)=”
SET@SQL='创建表#VarTemp('
而@Ct<@ColCount+1
开始
设置@SQL+='Col'+CAST(@Ct为nvarchar(8))+'nvarchar(256),'
设置@Ct=@Ct+1
结束
设置@SQL=LEFT(@SQL,(LEN(@SQL)-1))
设置@SQL+=”)'
选择@SQL

只需将输出的SQL字符串放入另一个窗口,或者如果您信任它,您可以将
SELECT
更改为
EXEC

什么计数?列数在哪里?您是否考虑过使用
SELECT*INTO
,以便
CREATE TABLE
不必是动态的?尝试使用“EXEC@sql”获取错误“CREATE TABLE”#VarTemp(Col1-nvarchar(256),Col2-nvarchar(256),-“不是有效的标识符”。@James123将其括在括号中:
EXEC(@sql)
。它正在尝试查找名为
创建表的存储过程…
否则。如何插入此临时表我尝试了“插入到#VarTemp EXEC sp#FindStringInTable“Nareshbhai%”、“dbo”、“aspnet_成员身份”错误我可以看到“无效对象名”#VarTemp.”James123这是您需要问的另一个问题。它可能是一个错误范围界定问题。