定义SQL过程

时间:2015-11-03 07:13:28

标签: sql sql-server tsql stored-procedures

我正在尝试在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

1 个答案:

答案 0 :(得分:2)

错误文字不言自明。由于CREATE PROCEDURE应该是批处理中的第一个语句 - 然后只需在GO语句之后添加USE,因此您将它分成两个批次 - 第一个设置当前DB,第二个创建过程本身。

USE NWatchEntitiesUnitTest
GO
CREATE PROCEDURE