我是一个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指定列别名?
提前致谢!
答案 0 :(得分:0)
问题是查询没有受到约束! - ...... - !这是DBFit中多行查询所必需的。