【问题标题】:Sybase: Incorrect syntax near 'go' in a 'IF EXISTS' blockSybase:“IF EXISTS”块中“go”附近的语法不正确
【发布时间】:2012-02-03 22:49:09
【问题描述】:

这是我的sql语句

IF EXISTS (select 1 from sysobjects where name = 'PNL_VALUE_ESTIMATE')
  drop table dbo.PNL_VALUE_ESTIMATE
go

isql 使用此错误消息退出

Msg 102, Level 15, State 1:
Server 'DB_SERVER', Line 3:
Incorrect syntax near 'go'.

但是 sql 语句对我来说看起来是正确的。怎么了?

Sybase 版本为 15

【问题讨论】:

  • 请忽略。我正在使用 vi 来检查我是否无意中包含了一些垃圾隐形字符,然后在这里复制并粘贴到 SO。我删除了其他标记,但错过了这个。 '$' 在这里仅表示 EOL。
  • 哇 - 以为 MS 买了并吞下了任何 sybaseish 的东西
  • 你是如何调用这个查询的?
  • @adriy 我在 bash shell 中使用 isql
  • 你的问题可能有类似mentioned here的解释。

标签: tsql sybase


【解决方案1】:

试试这个:

IF EXISTS (select 1 from sysobjects where name = 'PNL_VALUE_ESTIMATE')
  drop table dbo.PNL_VALUE_ESTIMATE

go

或者这个:

IF EXISTS (select 1 from sysobjects where name = 'PNL_VALUE_ESTIMATE')
BEGIN
  drop table dbo.PNL_VALUE_ESTIMATE
END

go

或者这个:

IF EXISTS (select 1 from sysobjects where name = 'PNL_VALUE_ESTIMATE')
BEGIN
  select 1
END

go

有用吗?

【讨论】:

  • 链接链接到 MySQL 参考。我的问题是关于 TSQL/Sybase
【解决方案2】:

GO不是T-SQL的关键字,而是编辑器的关键字。

SMSS(在其他之间)将它用作它发送到数据库服务器的批量命令之间的“划分”。在存储过程甚至脚本文件中执行它是行不通的。

编辑:也许它适用于 SyBase,但我认为在这种情况下它需要大写。

【讨论】:

    【解决方案3】:

    根据文档,GO 语句是您正在使用的编辑器的命令,而不是 SQL 本身:

    GO 不是 Transact-SQL 语句;这是一个被认可的命令 sqlcmd 和 osql 实用程序以及 SQL Server Management Studio 代码 编辑。

    也就是说 - Sybase 也是支持GO 语句的编辑器。

    我遇到了同样的问题,但使用的是 SQL Management Studio。问题是编辑器不支持某些语句周围的混合换行符类型 - GO 就是其中之一。例如,在 Management Studio 中,只允许使用 Windows 样式的换行符 (CR + LF),如果我使用 Linux 格式 (LF),它会给出与上述完全相同的错误。

    Notepad++(我使用的)等文本编辑器可以选择默认使用的行尾字符类型(Windows、Linux、Mac (CR))。

    尝试检查语句中使用了哪些换行符,看看是否可以解决问题。

    【讨论】:

      【解决方案4】:

      对象引用不应该有

      dbo..PNL_VALUE_ESTIMATE

      因为您没有给出数据库名称,并且如果您包含您需要的 obj 所有者 .. 错过了数据库名称?

      我会去:

      EXEC('DROP TABLE dbo..PNL_VALUE_ESTIMATE')

      在真正的部分也是如此,因为 DROP TABLE 总是被编译,如果表不在那里,你仍然会失败。

      你甚至需要 dbo 吗?如果您的 sql 始终以 dbo 身份运行,请忽略它。

      【讨论】:

      • 我以为 .. 是为了跳过模式名称,而不是为了跳过数据库名称。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-09-23
      • 1970-01-01
      • 1970-01-01
      • 2020-05-23
      • 2011-08-25
      • 1970-01-01
      相关资源
      最近更新 更多