2016-03-02 5 views
7

私はapache camelを使用してサードパーティのデータベースから読み込むコネクタアプリケーションを持っています。私はH2データベースを使って同じデータベースとクエリ操作を模擬しようとしているので、テストのためにthirdpartyデータベースへの接続は必要ありません。 データベースはMS SQL Serverにあります。私はH2データベースでSQLServerとしてModeを使用しています。しかし、私はif-else条件付きのmssqlクエリを持っています。実行しようとすると、次のエラーが発生します。H2データベースクエリのIf-Else条件

Exception in thread "main" org.h2.jdbc.JdbcSQLException: Syntax error in SQL statement " IF[*]((SELECT COUNT(*) FROM EMPLOYEE)>1) 
    SELECT TOP 10 * FROM EMPLOYEE 
    ELSE 
    SELECT TOP 1 * FROM EMPLOYEE "; expected "INSERT, {"; SQL statement: 
    if((SELECT count(*) from Employee)>1) 
    SELECT TOP 10 * from Employee 
    else 
    SELECT TOP 1 * from Employee [42001-185] 

私は条件付きクエリはH2データベースではサポートされていないと仮定しています:

MSSQLクエリは

if((SELECT count(*) from Employee where DateCreated < '2016-02-02 00:05:00')>1) 
    SELECT TOP 10 * from Employee where DateCreated < '2016-02-02 00:05:00' 
    else 
    SELECT TOP 1 * from Employee where DateCreated < '2016-02-02 00:05:00' 

エラーメッセージです。とにかく、私はH2でこの同じクエリを実行できますか? 最悪の場合、他にもH2と互換性のあるmssqlクエリを変更できますか?

+0

実際のクエリは大きすぎますので、ここに貼り付けたくありませんでした。条件が一致する場合は、別のクエリを実行する必要があります。シナリオをテストするために、単純なクエリを作成しました。 –

答えて

3

あるとは思いません。 H2のcaseコマンドを使用して、if/elseエフェクトを実行すると、アプリケーションで、実行する条件やステートメントに入るコードが要因となり、ms sqlとh2リクエストの両方で使用できます。 。

関連する問題