¿Cómo puedo solucionar este error : no admitidos SQL92?

Me wirte código en java y base de datos de la conexión con oracle. Puedo ejecutar algunos comandos y recibir este mensaje de error.Mi trabajo de la escritura en sapo, pero no trabajo en mi proyecto

url incluyen
.

.
.
.
.
    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; 
}

este error se produce debido a { } paréntesis. La pruebo .
Cuando puedo eliminar los paréntesis no de error. Pero los necesito y Cómo puedo solucionar este problema?

  • Mostrar su consulta. Su consulta parece ser incorrecto.
  • te lo publicaremos su consulta
  • mi consulta funciona en sapo, pero no se ejecuta en mi netbeans
  • Si desea obtener ayuda, considerar dos cosas. 1) url include " {2} ": no es suficiente publicar esto como un mensaje de error. Post todo el mensaje de error. 2) también debe publicar el valor de la url variable antes de llamar stmt.executeQuery(url).
  • nadie va a ser capaz de ayudar basa en el hecho de que se trabaja en SAPO. Post de la cadena de la instrucción.
  • allí {4} es error
  • Reemplazar {} este con () y probarlo.

5 Kommentare

  1. 13

    Es todo acerca de { y }. No los use. Ojdbc no analizarlo. El uso de diferentes token en lugar de ellos.

    • que token debo usar? Acabo de conocer el mismo problema al llamar a un procedimiento con jdbc
    • usted puede usar cualquier cosa que usted desea. F. E. el uso de xx , reemplace el primero y, a continuación, volver a reemplazar a la inversa
  2. 3

    Esto es probablemente debido a la JDBC sintaxis de Escape (vea la sección 13.4 de la JDBC 4.1 especificación). Un controlador JDBC debe manejar escapa entre { y } y traducir la escaparon de la función estándar, outer join etc a la base de datos de formato específico.

    Hasta donde yo sé un conductor sólo debe analizar el escape si se produce en la declaración del propio cuerpo, y no cuando se está dentro de un texto en la declaración (como en tu ejemplo). Así que me parece que es un error en el JDBC de procesamiento de escape de su conductor.

  3. 1

    Usted puede ser capaz de conseguir alrededor de esto, siguiendo la respuesta de otro StackOverflow post:
    Crear Java en Oracle de base de datos con JDBC

    Un resumen es:

    CallableStatement stat = conn.prepareCall(sql);
    stat.setEscapeProcessing(false);
    stat.execute();

    La línea del medio es lo que parecen haber desaparecido. No pude averiguar hasta que me encontré con que post.

  4. 0

    Parece que varios de REEMPLAZAR las llamadas no tienen argumentos suficientes. Contando desde la izquierda, la primera REEMPLAZAR tiene dos argumentos. El segundo, sólo tiene un argumento. La tercera tiene dos argumentos. El cuarto tiene un solo argumento. El quinto (y último) tiene dos argumentos. En Oracle la Función de REEMPLAZAR requiere al menos dos argumentos. Yo no soy capaz de determinar si esta es la causa de que el error no ha publicado una declaración completa, pero yo sin duda espera la falta de argumentos apropiados para REEMPLAZAR a ser un problema.

    Compartir y disfrutar.

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein

Pruebas en línea