Tsql Sybase:靠近'的语法不正确;go';在';如果存在';块
这是我的sql语句Tsql Sybase:靠近'的语法不正确;go';在';如果存在';块,tsql,sybase,Tsql,Sybase,这是我的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
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请尝试以下操作:
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
或者这个:
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
有用吗?对象引用不应该 dbo..PNL_值_估计值 因为您没有提供数据库名称,如果您包括所需的obj所有者。。错过数据库名称 我会去: EXEC('DROP TABLE dbo..PNL\u VALUE\u ESTIMATE') 在真正的部分也是如此,因为DROP表总是被编译的,如果表不在那里,您仍然会失败
你需要dbo吗?如果您的sql始终以dbo的形式运行,请将其忽略。
GO
不是T-sql的关键字,而是编辑器的关键字
SMSS(在其他服务器之间)将其用作它发送到数据库服务器的命令批之间的“分割”。在存储过程或脚本文件中执行它将不起作用
编辑:可能它与SyBase一起使用,但我认为在这种情况下需要大写。从文档中可以看出,
GO
语句是您正在使用的编辑器的命令,而不是SQL
本身:
GO不是Transact-SQL语句;这是一个由用户识别的命令
sqlcmd和osql实用程序以及sqlserver管理工作室代码
编辑
也就是说-Sybase还是一个支持GO
语句的编辑器
我也遇到过同样的问题,但是使用SQL Management Studio。问题是编辑器不支持某些语句周围的混合换行符类型-GO
是其中之一。例如,在ManagementStudio中,只允许使用Windows样式的换行符(CR+LF),如果我使用Linux格式(LF),它将给出与上面相同的错误
诸如Notepad++(我使用的)之类的文本编辑器可以选择默认情况下使用的行尾字符类型(Windows、Linux、Mac(CR))
尝试检查语句中使用的换行符,看看是否可以解决问题。请忽略此问题。我用vi检查我是否无意中包含了一些垃圾看不见的字符,然后复制并粘贴到这里。我移走了另一个记号笔,但漏掉了这个这里是指EOL。哇-我以为MS买了并吞下了SybaseIsh的任何东西,你是如何调用这个查询的?@adriy我在bash Shell中使用isql你的问题可能有类似的解释。链接链接链接到MySQL引用。我的问题是关于TSQL/Sybase的,我想。。用于跳过架构名称,而不是跳过db名称。