Select SQLPLUS

Hola,
Tengo una duda que me tiene bastante despistado.
Tengo 2 bases de datos Oracle 10.2.0.3.0, y en ambas tengo una misma tabla (Tabla_1) con una serie de campos, entre ellos Campo1 varchar2(18) not null.
Si realizo sobre sqlplus la siguiente consulta:
Select count(*) from Tabla_1 where Campo1='aaa'
ó bien sin entrecomillar
Select count(*) from Tabla_1 where Campo1=aaa
Se ejecutan correctamente, sin embargo, si lo lanzo sobre la otra, la primera select (entrecomillada) se ejecuta bien, sin embargo, la segunda devuelve el error ERROR at line 1:ORA-01722: invalid number.
Se que lo correcto es entrecomillado, pero quería saber si hay algún parámetro o que tengo diferente de una bbdd a la otra para que en una se ejecuten correctamente las 2 select y en la otra solo la entrecomillada.
Gracias

1 Respuesta

Respuesta
1
La única razón es el tipo de dato verifica que tipo de dato tienes en la otra base de datos
Hola,
Las 2 tablas tienen exactamente las misma estructura en ambas bases de datos e incluso con el mismo contenido en registros.
Enviame la estructura de las dos tablas
Creo que no te va a aportar mucho para el problema, pero la estructura de la tabla ( que es igual en ambas bbdd ), es esta:
POSICIONES_INICIO
---------------------------
NUMERO_SERIE varchar2(18) not null
FECHA_INICIO date not null
VALIDAR char(1) not null
FECHA_FIN date
Pienso que el problema está en que una base de datos tiene configurado algún parámetro diferente a como está en la otra, pero aún no he podido dar con ello.
Se me pasó comentarte que el campo al cual referencio en mi primer post como Campo1 ( es decir el campo sobre el cual va el "where" de la query ), es el primero ( NUMERO_SERIE), aunque ya te había comentado que era un varchar2(18) not null, pero para que no te quedara duda alguna.
Hmm mira como te comente antes ese error es por que ha fallada el intento
de conversión de una cadena de carctares a un numero por que la cadena de caracteres no era un literal de numero válido
lo que puede hacer nuevamente es comprobar las cadenas de caracteres que estas ejecutando en la función o expresión y también mirar los parámetros de la base de datos como están pero para mi no es problema de los parámetros pero si deseas puedes comparlos mirate el vista v$system_parameter y los compares y me comentas
saludos
Hola, disculpa la demora en contestarte, me encontraba fuera de casa y no he tenido posibilidad de llevar a cabo las últimas comprobaciones que habíamos comentado hasta hoy mismo.
En cuanto a lo que dices de comprobar las conversiones de cadenas de caracteres a número, lo puedo hacer, pero realmente ¿crees qué me portará algo de cara a mi problema?, la cuestión es que las conversiones que se llevan a cabo, son las mismas en una base de datos que en la otra, ¿por qué en una si funcionan esas conversiones y en la otra no?.
Del tema de la revisión de parámetros de ambas bbdds que te había comentado que iba a hacer, no es que sea un gran entendido en la materia, no he visto
Nada "sospechoso", salvo un parámetro que si me ha llamado la atención y que me hace pensar que el problema me puede venir por ahí, aunque no lo tengo tampoco muy claro de momento. Tendré que investigar algo más sobre este parámetro.
El parámetro en cuestión es uno llamado "compatible", y tiene el valor 10.2.0.3.0 en una bbdd y 9.2.0.0.0 en la otra.
Cambiaré el valor 9.2.0.0.0 a 10.2.0.3.0 y volveré a hacer mis pruebas.
Un saludo
Tal vez el problema puede radicar ahí, hay un comando que se llama compatibility y sus posibles valores son v7, v8 o native y este permite indicar la version con la que se comprueba la compatibilidad de los comandos. Native indica que el propio servidor oracle decidirá la compatibilidad y esta la puedes setear de la siguiente manera
set nombrevarible valor
set compatibility v7 o v8 o native
Saludos si te funciono o ya solucionaste no se te olvide cerrar tu pregunta y dejarme tus comentarios

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas