2012-09-03 56 views
1

我用JAVA編寫代碼,並與oracle建立數據庫連接。我運行一些腳本,並在蟾蜍得到這個error.My腳本的工作,但在我的項目不起作用我該如何解決這個錯誤:不支持SQL92?

URL包括 。

. 
. 
. 
. 
    DECODE 
       (REF.target_type_code, 
        '1', wf.workflow_name, 
        '20', reqtyp.request_type_name, 
        '6', prj1.project_name, 
        '59', trootinfo1.NAME, 
        '55', DECODE 
        (document.checked_out_by, 
         NULL, 
         REPLACE 
         (REPLACE 
          (REPLACE 
           (REPLACE 
            (REPLACE 
             (knta_i18n_resource.get 
              ('DMS_REFERENCE_DETAIL_CHECKED_OUT.TXT' 
              ), 
              knta_i18n_format_utils.format_date 
                 (document.checked_in_date, 
                 3 
                 ) 
             ) 
            ), 
            document.version_number 
           ) 
          ), 
          '{4}' 
         ) 
        ) 
       ) reference_detail, 

. 
. 
. 

try { 
    stmt = connection.createStatement(); 
    rset = stmt.executeQuery(url) ; 
} catch (Exception e) 

{ 
    error= e.getLocalizedMessage() ; 
    return 4; 
} 

由於{}括號會發生此錯誤。我測試它。 當我刪除括號不要錯誤。但我需要他們,我該如何解決這個問題?

+0

顯示您的查詢。您的查詢似乎不正確。 – devang

+0

將您發佈的查詢 –

+0

我的查詢工作蟾蜍,但如果你想要得到的幫助,可以考慮兩件事情在我的netbeans –

回答

7

它的所有關於 '{' 和 '}'。你不使用它們。 ojdbc不解析它。 使用不同的標記而不是它們。

+0

我應該使用哪個令牌?當我用jdbc – Jaycee

+0

調用過程時,我遇到了同樣的問題,您可以使用任何您想要的東西。 F.E.使用_xx_,先替換它,然後重新替換它以反轉 –

0

看來,幾個更換電話沒有足夠的論據。從左數起,第一個REPLACE有兩個參數。第二個只有一個參數。第三個有兩個論點。第四個只有一個論點。第五個(最後一個)有兩個參數。在Oracle中,REPLACE function至少需要兩個參數。我無法確定這是錯誤的原因,因爲您沒有發佈完整的聲明,但我肯定希望REPLACE缺乏正確的參數是一個問題。

分享和享受。

2

這可能是由於JDBC轉義語法(參見JDBC 4.1規範的第13.4)。 JDBC驅動程序應該處理{}之間的轉義,並將轉義的標準函數,外連接等轉換爲數據庫特定的格式。

據我知道,如果在聲明中體本身也發生了驅動程序應當只解析逃逸,而不是當它裏面的語句文本(因爲它是在你的例子)。對我來說,這看起來像是驅動程序的JDBC轉義處理中的一個錯誤。

相關問題