创建与使用GO相关的存储过程语法

Mik*_*e D 4 sql sql-server stored-procedures sql-server-2005

有谁知道为什么.

CREATE PROCEDURE My_Procedure
    (@Company varchar(50))  
AS  
    SELECT PRD_DATE 
    FROM WM_PROPERTY_DATES 
    WITH (NOLOCK) 
    WHERE PRD_COMPANY = @Company 
GO
Run Code Online (Sandbox Code Playgroud)

在SQL管理工作室中给我一个错误消息:

Msg 102, Level 15, State 1, Procedure My_Procedure, Line 1 Incorrect syntax near 'GO'.

现在,这是一个批处理的最后一个语句,也许最后一个语句应该没有GO

ute*_*unk 8

如果您转到"另存为...",请单击"保存"按钮上的小向下箭头,然后选择"使用编码保存...",然后您可以将行结束设置为Windows(CR LF).这似乎已经为我解决了这个问题......


小智 3

SQL Server 中发布了一个错误,该错误无法正确解析 GO 语句。我相信它是在您可以执行GO X并多次 执行批处理X时引入的。

有时我不得不添加注释部分(“ -- ”)来强制解析器终止而不是产生语法错误。当我的一批代码有 400,000 行时,就发现了这一点。

例子:

打印“这是一个测试。”

去 -

打印“这不是测试。”

去5——

  • 只是对于其他人来说——我不清楚为什么这是公认的答案:) 当行数明显多于 1 时,错误消息指向“.. line 1 ..”。这表明重新格式化就是答案(将单独一行)或解决换行问题(如下面的一些答案)。如果这里的答案不起作用,请看看楼下。 (2认同)