Sql server 在SQLFiddle中访问过程时出现问题

Sql server 在SQLFiddle中访问过程时出现问题,sql-server,tsql,stored-procedures,sqlfiddle,Sql Server,Tsql,Stored Procedures,Sqlfiddle,我正在使用SQLServer2008在SQLFIDLE中构建一个查询。此查询是一个选择信息的过程。我不能发布查询本身,但我可以发布与过程相关的语法: CREATE PROCEDURE BusinessInfo @Variable VarChar(10) AS BEGIN SELECT Info.* FROM Table Info WHERE Info.PersonKey = @Variable ORDER BY Info.LastName END GO EX

我正在使用SQLServer2008在SQLFIDLE中构建一个查询。此查询是一个选择信息的过程。我不能发布查询本身,但我可以发布与过程相关的语法:

CREATE PROCEDURE BusinessInfo
  @Variable VarChar(10)
AS
BEGIN
  SELECT   Info.*
  FROM     Table Info
  WHERE    Info.PersonKey = @Variable
  ORDER BY Info.LastName
END
GO
EXECUTE BusinessInfo '1'
GO
问题是,无论我做什么,只要我放入create过程,它都不会返回任何结果。我甚至构建了这个过程,说END GO,然后重新编写了整个过程查询,它什么也没有收回,然后我删除了这个过程,它收回了我要查找的信息。我做错了什么

如果您需要一个工作示例,这将适用于SQLFIDLE中的任何模式

CREATE PROCEDURE Sample
AS
BEGIN
SELECT   'Information'
END
GO
EXECUTE Sample
GO
可能的解决办法:

1) 对此进行更改(默认终止符为分号):

CREATE PROCEDURE Sample
AS
BEGIN
    SELECT   'Information'
END;

EXECUTE Sample
2) 使用第四个按钮将查询终止符更改为GO,您的示例将起作用。

选择GO as terminator后的代码

CREATE PROCEDURE BusinessInfo
  @Variable VarChar(10)
AS
BEGIN
  SELECT   Info.*
  FROM     Table Info
  WHERE    Info.PersonKey = @Variable
  ORDER BY Info.LastName
END
GO

EXECUTE BusinessInfo '1'
GO
基于

每个面板下面的[;]按钮是怎么回事?

这个模糊的小按钮决定了每个面板中的查询在发送到数据库之前是如何被分解的。此按钮弹出打开一个下拉列表,其中列出了不同的“查询终止符”。查询终止符用作一个标志,用于指示(当出现在行尾时)当前语句已结束。终止符没有被发送到数据库;相反,它只是指示在执行查询之前应该如何解析文本

通常,你不需要按这个按钮;此功能的主要价值在于定义存储过程。这是因为通常情况下,在存储过程的主体定义中,您可能希望以分号结束一行(通常是这种情况)。因为我的默认查询终止符也是分号,所以我没有明显的方法可以看出存储过程的分号实际上不是查询的结尾。留下分号终止符,我会将过程定义分解为不正确的部分,肯定会导致错误。将查询终止符更改为分号以外的其他名称可以避免此问题


添加分号谢谢!它起作用了!与此同时,我早些时候就试过了,但没有成功。不过,我也在分号后面加了GO。为什么这会产生如此负面的影响?在这种情况下你会怎么做?谢谢!它起作用了!与此同时,我早些时候就试过了,但没有成功。不过,我也在分号后面加了GO。为什么这会产生如此负面的影响?在这种情况下,GO到底会做什么?@user3654055在GO和next definition/EXECE之间添加空行一旦定义了它,如何调用该过程?我把
callprocedurename
放在查询面板中,它说只允许SELECT语句。@Barmar说得很好,坦率地说,我不知道为什么行为发生了变化。我以前使用SQLFIDLE,但现在我也在使用:或者我,主要是因为我一直尝试使用SQLFIDLE.com,但在尝试构建模式时出现了一个“临时”错误。我问了一个问题,有人回答说这是一个已知的错误。