Mam aplikację łącznika, która czyta z zewnętrznej bazy danych przy użyciu wielbłąda Apache. Próbuję kpić z tej samej bazy danych i operacji kwerendy przy użyciu bazy danych H2, więc łączność z bazą danych trzeciej strony nie jest wymagana do testowania. Baza danych znajduje się na MS SQL Server. Używam trybu jako SQLServer w mojej bazie danych H2. Mam jednak zapytanie mssql z warunkiem if-else. Kiedy próbuję wykonać to, otrzymuję następujący błąd.Jeśli jest inny warunek w zapytaniu bazy danych H2
MSSQL zapytanie jest
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'
Komunikat o błędzie:
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]
jestem przy założeniu, że zapytanie warunkowe nie jest obsługiwana w bazie H2. Czy mimo to mogę wykonać to samo zapytanie w H2? Najgorszy przypadek, czy jest jakiś inny sposób, w którym mogę zmienić zapytanie mssql, które jest kompatybilne z H2?
Rzeczywiste zapytanie jest zbyt duże, więc nie chciałem go tutaj wklejać. Jeśli warunek pasuje, musimy wykonać jedno zapytanie inne niż inne. Aby przetestować scenariusz, po prostu utworzyłem proste zapytanie. –