2017-06-05 35 views
1

我正在使用java 6和oracle db和spring 3.0 jdbcTemplate的遺留系統上工作。java.sql.sqlException:意外的標記:FIRST_VALUE

而我試圖執行的查詢是:

SELECT department_id, last_name, salary, FIRST_VALUE(last_name) 
    OVER (ORDER BY salary ASC ROWS UNBOUNDED PRECEDING) AS lowest_sal 
    FROM (SELECT * FROM employees WHERE department_id = 90 
    ORDER BY employee_id) 
    ORDER BY department_id, last_name, salary, lowest_sal; 

但我收到以下錯誤:

值java.sql.SQLException:意外的令牌:FIRST_VALUE在聲明中 [SELECT部門, last_name,salary,FIRST_VALUE(last_name) OVER(ORDER BY salary ASC ROWS UNBOUNDED PRECEDING)as ...]

在sql developer中運行相同的查詢運行良好。我無能爲力。

回答

0

對我來說,像Java 6應用程序所實現的客戶端版本的問題,像FIRST_VALUE和窗口構造(OVER子句)之類的說明可能不會在較早的客戶端中受支持,因爲它們自9i版本以來合併到DBMS 。

當我嘗試在Forms6i環境中使用它時,由於該版本的內置客戶端無法分析語句,所以我遇到了諸如select語句中的「無效」CASE條件等問題,即使我連接到11g DBMS。

對此的解決方案可能是在您的數據庫中創建一個存儲過程來檢索您的數據,然後從您的應用程序執行並讀取結果。