0
我是一位新手,也是DBFit的新手。我已經做了成功的測試DBFit但是在我的新測試之一,我發現了一個異常錯誤:DBFit jdbc.SQLServerException:關鍵字'as'附近的語法不正確
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指定列別名?
在此先感謝!