我正在尝试在SQL Management Studio中定义以下SQL过程。有很多亮点告诉我语法错误。任何帮助表示赞赏。
错误:
Msg 111,Level 15,State 1,Procedure InsertNonExistingNode,Line 5 '创建/更改程序'必须是查询批处理中的第一个语句。
USE NWatchEntitiesUnitTest
CREATE PROCEDURE InsertNonExistingNode (@TableVariable dbo.NodeTypeTable 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 Name,
Location,
DisplayName,
AccessLevel,
IsEnabled,
CreatedOn,
CreatedBy,
ModifiedOn,
ModifiedBy,
NativeId,
SourceId,
Name,
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 :(得分:2)
错误文字不言自明。由于CREATE PROCEDURE
应该是批处理中的第一个语句 - 然后只需在GO
语句之后添加USE
,因此您将它分成两个批次 - 第一个设置当前DB,第二个创建过程本身。
USE NWatchEntitiesUnitTest
GO
CREATE PROCEDURE