语法错误:创建过程必须是批处理

时间:2016-01-13 17:43:43

标签: sql-server stored-procedures

这个问题之前已被问到,但所有涉及使用“go”,我不需要这里,至少我是这么认为的。

我正在遵循这个啧啧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'必须是查询批处理中的第一个语句。“

2 个答案:

答案 0 :(得分:5)

如果要保持脚本不变(选择后跟创建过程),可以使用{{1}在NVARCHAREXECUTE中构建存储过程的创建}。这样,CREATE语句就是第一个语句。像这样:

sp_executesql

答案 1 :(得分:3)

是的,SQL Server希望将创建过程作为第一行。只需注意上面的选择,它不是你想要的,因为你已经在存储过程中指定了字段。