2013-12-09 51 views
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指定列別名?

在此先感謝!

回答

0

問題是查詢不受限制! - ... - !這是DBFit中多行查詢所需的。

相關問題