获取每列的跟随错误(注意,两个表具有相同的列名,但我不确定如何为表数据类型添加前缀)
Msg 209,Level 16,State 1,Procedure InsertNonExistingNode,Line 21 不明确的列名称' NodeTypeId'。
USE NWatchEntitiesUnitTest
GO
CREATE PROCEDURE InsertNonExistingNode (@TableVariable dbo.NodeTableType READONLY,
@ScalarParameter nvarchar(255))
AS
BEGIN
INSERT INTO NWatchNodes WITH (ROWLOCK) (
NodeTypeId,
Location,
DisplayName,
AccessLevel,
IsEnabled,
CreatedOn,
CreatedBy,
ModifiedOn,
ModifiedBy,
NativeId,
SourceId,
Name,
Alias)
SELECT
NodeTypeId,
Name,
Location,
DisplayName,
AccessLevel,
IsEnabled,
CreatedOn,
CreatedBy,
ModifiedOn,
ModifiedBy,
NativeId,
SourceId,
Alias
FROM @TableVariable t
/*Left Join then where ID is null to make sure the record doesn't exists*/
LEFT JOIN NWatchNodes PR WITH (NOLOCK)
ON PR.ID = @ScalarParameter
AND PR.Name = t.Name
WHERE PR.ID IS NULL
END
GO
答案 0 :(得分:4)
这意味着您在NodeTypeId
和@TableVariable
表中都有NWatchNodes
列。
要解决此问题,只需在选择列表中使用适当的别名,即t.NodeTypeId
或PR.NodeTypeId
。
答案 1 :(得分:3)
您在别名方面存在问题,为了进一步了解问题,该错误意味着您在两个表中具有相同/相似的列名。
提示:如果您在桌面上使用别名,始终指定特定列的别名,以便您不会遇到该错误。