DBFit jdbc.SQLServerException:关键字“as”附近的语法不正确

Posted

技术标签:

【中文标题】DBFit jdbc.SQLServerException:关键字“as”附近的语法不正确【英文标题】:DBFit jdbc.SQLServerException: Incorrect syntax near the keyword 'as' 【发布时间】:2013-12-09 03:20:20 【问题描述】:

我是 *** 新手,也是 DBFit 的新手。我已经成功完成了 DBFit 测试,但是在我的一个新测试中,我遇到了异常错误:

com.microsoft.sqlserver.jdbc.SQLServerException: Incorrect syntax near the keyword 'as'.
    at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDatabaseError(SQLServerException.java:216)
    at com.microsoft.sqlserver.jdbc.SQLServerStatement.getNextResult(SQLServerStatement.java:1515)
    at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.doExecutePreparedStatement(SQLServerPreparedStatement.java:404)
    at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement$PrepStmtExecCmd.doExecute(SQLServerPreparedStatement.java:350)
    at com.microsoft.sqlserver.jdbc.TDSCommand.execute(IOBuffer.java:5696)
    at com.microsoft.sqlserver.jdbc.SQLServerConnection.executeCommand(SQLServerConnection.java:1715)
    at com.microsoft.sqlserver.jdbc.SQLServerStatement.executeCommand(SQLServerStatement.java:180)
    at com.microsoft.sqlserver.jdbc.SQLServerStatement.executeStatement(SQLServerStatement.java:155)
    at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.executeQuery(SQLServerPreparedStatement.java:285)
    at dbfit.fixture.Query.getDataTable(Query.java:40)

这是我正在测试的适合页面的一部分:

!3 Define ODS Query
!define ODSQuery  SELECT b.BrokerID
          ,b.BrokerCode as BC 
      FROM dbo.Broker b
      

!3 Define ODMart Query
!define ODMartQuery select BrokerID
          ,BrokerCode as BC 
from DSE_ODMART_TST_SIT.dbo.d1_Broker

!3 Compare ODS vs. ODMart
| query |($ODSQuery EXCEPT $ODMartQuery) UNION ($ODMartQuery EXCEPT $ODSQuery)|
|BrokerID|BrokerCode|

我尝试不使用“AS”,仅使用“BrokerCode BC”为该列设置别名,但仍然存在不正确的语法异常错误。 如果我删除别名,只需“BrokerCode”,则适合测试通过。 如果我在 MSSSMS 中运行比较查询,所有 3 个版本都可以工作。

请注意,我的示例在第二个表中具有相同的列名 BrokerCode 只是为了使联合工作没有别名。但是我确实有其他列具有不同的列名,因此我需要进行别名工作。

我最近刚刚下载了最新的 DBFit 版本,我正在使用 miscrosoft 的 sqljdbc4.jar 作为 jdbc 驱动程序。

查询出了什么问题,如何在 DBFit 中使用 MSSQL 指定列别名?

提前致谢!

【问题讨论】:

【参考方案1】:

问题是查询不受 !- ... -! 的约束这是 DBFit 中的多行查询所必需的。

【讨论】:

以上是关于DBFit jdbc.SQLServerException:关键字“as”附近的语法不正确的主要内容,如果未能解决你的问题,请参考以下文章