SQL语句“WITH”关键字中的语法错误

时间:2014-03-27 22:17:21

标签: java sql h2

jdbc:h2:mem:request_no;MODE=Oracle

我们正在使用带有Windows 7(64位)和jdk 1.7.0_25的h2版本1.3.171。

当我们尝试运行SQL语句时:

WITH TMP1 AS (SELECT col1 FROM table1) SELECT TMP1.col1 FROM TMP1 

我们得到以下例外:

org.h2.jdbc.JdbcSQLException: Syntax error in SQL statement 
"WITH TMP1 AS[*] (SELECT REQUEST_NO FROM QUOTE) 
  SELECT TMP1.REQUEST_NO FROM TMP1";
expected "., ("; SQL statement:
WITH TMP1 AS (SELECT REQUEST_NO FROM QUOTE) 
  SELECT TMP1.REQUEST_NO FROM TMP1 [42001-171]

SQL语句很好,因为我们可以通过SQL Developer成功执行它。

感谢任何帮助。

感谢。

1 个答案:

答案 0 :(得分:1)

尝试将列定义为CTE定义的一部分:

WITH TMP1(REQUEST_NO) AS
      (SELECT REQUEST_NO FROM QUOTE
      )
SELECT TMP1.REQUEST_NO
FROM TMP1;

我认为在使用with时,某些数据库需要显式列列表。