2

我正在使用 SQL Server 2008 在 SQLFiddle 中构建一个查询。这个查询是一个选择信息的过程。我不能发布查询本身,但我可以发布围绕该过程的语法:

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

问题是无论我做什么,只要我把创建过程,它什么都不返回。我什至构建了程序,说 END GO,然后重新编写了整个程序查询,它什么也没有撤回,然后我删除了程序,它撤回了我正在寻找的信息。我究竟做错了什么?

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

CREATE PROCEDURE Sample
AS
BEGIN
SELECT   'Information'
END
GO
EXECUTE Sample
GO
4

1 回答 1

1

可能的解决方案:

1)改成这个(默认终止符是分号):SqlFiddleDemo

CREATE PROCEDURE Sample
AS
BEGIN
    SELECT   'Information'
END;

EXECUTE Sample

2)使用第 4 个按钮将查询终止符更改为 GO,您的示例将起作用。 在此处输入图像描述

选择 GO 作为终止符后的代码

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

基于文档

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

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

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

于 2015-08-24T20:51:40.770 回答