虽然我已经删除了临时表,但是如果创建了与原表同名但是具有附加列名称的临时表,它仍然不允许我选择新的列名称。我一直在使用SQL Server 2008。请尝试以下示例代码:
这段话的意思是:
IF (object_id('tempdb..#xyz') IS NOT NULL)
DROP TABLE #xyz;
CREATE TABLE #xyz(
[a] [datetime] NULL,
[b] [nvarchar](255) NULL,
[c] [nvarchar](255) NULL
) ON [PRIMARY]
GO
IF (object_id('tempdb..#xyz') IS NOT NULL)
DROP TABLE #xyz;
CREATE TABLE #xyz(
[a] [datetime] NULL,
[b] [nvarchar](255) NULL,
[c] [nvarchar](255) NULL,
[d] [nvarchar](255) NULL
) ON [PRIMARY]
SELECT [d] FROM #xyz
这段话的意思是:
Msg 207, Level 16, State 1, Line 13
Invalid column name 'd'.
如果我们像Martin Parkin提到的那样选择*
,它将返回带有列名d
的结果。
我无法为我的动态列选择*
,也无法选择其他列。
为什么呢?
temp_process.dbo.xyx
表的定义是基于第一个select into推断出来的。编译非常基础,不足以注意到您删除和重新创建表的情况。使用GO分离编译单元。 - John Gibb