Saltar al contenido

Obtener una excepción ORA-00942: la tabla o la vista no existe: al insertar en una tabla existente

Deseamos compartirte la mejor solución que descubrimos en internet. Nosotros queremos que te sea de mucha ayuda y si quieres compartir algo que nos pueda ayudar a mejorar hazlo con libertad.

Solución:

Oracle también informará este error si la tabla existe, pero no tiene ningún privilegio sobre ella. Entonces, si está seguro de que la tabla está allí, verifique las subvenciones.

Parece haber algún problema con setCLOB() que provoca un ORA-00942 en algunas circunstancias cuando la tabla de destino existe y tiene los privilegios correctos. Estoy teniendo exactamente este problema ahora, puedo hacer que el ORA-00942 desaparezca simplemente sin vincular el CLOB en la misma tabla.

Probé setClob() con java.sql.Clob y setCLOB() con oracle.jdbc.CLOB pero con el mismo resultado.

Como dices, si atas como un string el problema desaparece, pero esto limita el tamaño de sus datos a 4k.

Según las pruebas, parece activarse cuando se abre una transacción en la sesión antes de vincular el CLOB. Informaré cuando haya resuelto esto… verificando el soporte de Oracle.

No hubo ningún problema con las propiedades de conexión de mi base de datos o con mi tabla o nombre de vista. La solución al problema fue muy extraña. Una de las columnas que estaba intentando insertar era del tipo Clob. Como tuve muchos problemas para manejar los datos de clob en Oracle DB antes, lo intenté reemplazando el setter de clob con un temporal string setter y el mismo código se ejecutó sin ningún problema y todas las filas se insertaron correctamente.

es decir. peparedstatement.setClob(índicecolumna, clob)

fue reemplazado con

peparedstatement.setString(índicecolumna, “Cadena”)

Tienes la posibilidad dar recomendación a este tutorial si te fue útil.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *