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成功执行它。

任何帮助表示赞赏。

谢谢。

最佳答案

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

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


我认为某些数据库在使用with时需要明确的列列表。

09-26 14:15