【问题标题】:Incorrect Syntax: Create Procedure must be the only statement in the batch不正确的语法:创建过程必须是批处理中的唯一语句
【发布时间】:2016-01-13 17:43:43
【问题描述】:

之前有人问过这个问题,但它都涉及使用“go”,我在这里不需要,至少我相信是这样。

我正在关注这个 tut https://www.youtube.com/watch?v=-xMGwiV5A6o,正好在 1:25 附近。而且他的似乎执行了,而我的没有。

    Select * From Snacks

    Create Proc spGetSnackByID
    @Id int
    as

    Begin
    Select Id, Name, Location
    from Snacks where Id = @Id
    End

这是确切的错误,用“BEGIN”语句突出显示:

“消息 111,级别 15,状态 1,过程 spGetSnackByID,第 7 行 'CREATE/ALTER PROCEDURE' 必须是查询批处理中的第一条语句。"

【问题讨论】:

  • 是的,SQL Server 希望 create proc 作为第一行。把上面的select注释掉就好了,反正不是你想要的,因为你已经在存储过程中指定了字段。
  • 哦,是的,成功了,谢谢!

标签: sql-server stored-procedures


【解决方案1】:

如果您想保持脚本原样(选择后跟一个创建过程),您可以使用sp_executesqlNVARCHAREXECUTE 中构造存储过程的创建。这样,CREATE 语句就是第一个语句。像这样:

Select * From Snacks

EXECUTE sp_executesql N'
  Create Proc spGetSnackByID
  @Id int
  as
  Begin
    Select Id, Name, Location
    from Snacks where Id = @Id
  End
';

【讨论】:

    【解决方案2】:

    是的,SQL Server 想要创建过程作为第一行。只需将上面的 select 注释掉,反正它不是你想要的,因为你已经在存储过程中指定了字段。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-19
      相关资源
      最近更新 更多