我有两张桌子Profile
& TokenState
表,由名为TokenStateID smallint
的列连接。 TokenState
基本上是一个枚举表,其中每个TokenStateID
都分配给某些TokenState char(2)
说清楚:
CREATE TABLE [AMS_APD].[TokenState]
(
[TokenStateID] SMALLINT NOT NULL,
[TokenState] VARCHAR (2) NOT NULL,
);
我想加入Profile
& TokenState
并将结果存储在@ProfileTemp
INSERT INTO @ProfileTemp(prof.[Eavtoken], ts.[TokenState])
SELECT
prof.[Eavtoken],
ts.[TokenState]
(SELECT *
FROM [AMS_APD].[Profiles]
WHERE SDHASH1 = @SDHASH1) prof -- @SDHASH1 stored proc. parameter
INNER JOIN [AMS_APD].[TokenState] ts
ON prof.TokenStateID = ts.TokenStateID
问题是行INSERT INTO @ProfileTemp(prof.[Eavtoken], ts.[TokenState])
抛出异常:
警告SQL71502:过程:[AMS_APO]。[QueryProfileBySDHASH1]有一个未解析的对象[@ProfileTemp]的引用。[TokenState]。
答案 0 :(得分:2)
()
的内容应该是您要插入的列名,而不是您从中获取数据的位置。
INSERT INTO
@ProfileTemp([TokenStateID], [TokenState])
SELECT
prof.[Eavtoken],
ts.[TokenState]
FROM
<etc, etc>
假设您已经使用这些列名创建了表变量。
如果您想为自己创建表格,可以像这样创建临时表(与表变量略有不同) ......
SELECT
prof.[Eavtoken] AS TokenStateID,
ts.[TokenState] AS TokenState
INTO
#ProfileTemp
FROM
<etc, etc>