2012-09-03 27 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转义处理中的一个错误。

相关问题