这个问题之前已被问到,但所有涉及使用“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'必须是查询批处理中的第一个语句。“
答案 0 :(得分:5)
如果要保持脚本不变(选择后跟创建过程),可以使用{{1}在NVARCHAR
和EXECUTE
中构建存储过程的创建}。这样,CREATE语句就是第一个语句。像这样:
sp_executesql
答案 1 :(得分:3)
是的,SQL Server希望将创建过程作为第一行。只需注意上面的选择,它不是你想要的,因为你已经在存储过程中指定了字段。