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

时间:2013-12-09 03:20:21

标签: sql-server sql-server-2008 jdbc dbfit

我是一个stackoverflow新手,也是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',然后Fit Test通过。 如果我在MSSSMS中运行比较查询,则所有3个版本都可以工作。

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

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

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

提前致谢!

1 个答案:

答案 0 :(得分:0)

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