Oracle - Errores con Insert y Update - Ayuda!!!!

 
Vista:

Errores con Insert y Update - Ayuda!!!!

Publicado por Antonio (23 intervenciones) el 19/12/2002 09:28:00
En primer lugar muchas gracias.
Tengo el siguiente problema:
Una aplicación que funciona correctamente en Developer 2000, al compilarla y ejecutarla con Developer 6i hace los siguiente:
En las instrucciones Insert y Update, tengo dos variables = a blancos:
var1 := ' ';
var2 := ' ';
Pero cuando se ejecuta la instrucción en cuestión, dice que no se puede insertar un NULL en un campo definido como NOT NULL .
Comprobando el programa he detectado que el insert y el update convierten automáticamente la variable a null, eliminando los espacios en blanco. Si en vez de variables uso ' ' y ' ' si me lo respeta o poniendo dentro del insert o update un NVL(VAR1,' ').

¿PODRIAIS EXPLICARME POR QUÉ CONVIERTE LA VARIABLE A NULL?

Salu2.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Espacio

Publicado por Jorge (87 intervenciones) el 19/12/2002 22:43:48
Yo creo que tu problema es que las variables no tienen ni un espacio en blanco (Ej: a1 = '' ) tienes que asegurarte de que exista mas de algun espacio en blanco (Ej a1 = ' ' ) para que no te las tome como Nulas.

Saludos.

Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Si que tengo espacios

Publicado por antonio (23 intervenciones) el 20/12/2002 09:16:10
Muchas gracias, pero las variables si que tienen espacios. Es más, he probado con tres versiones de Developer 6i, y en las tres hace lo mismo.

desc t
columna 1 varchar2(4) not null

Y si pongo:

Declare
a varchar2(4) ;
begin
a:= ' ';
insert into t values (a);
commit;
end;
Da el error de que no se puede insertar un nulo en la tabla t columna1.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Algun Trigger ?

Publicado por Jorge (87 intervenciones) el 20/12/2002 21:56:14
lo unico que se me ocurre es que exista algun trigger a nivel de Base de datos que te este regresando éste error.

tiene Triggers la tabla ??

Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Algun Trigger ?

Publicado por Antonio (23 intervenciones) el 23/12/2002 10:05:07
En primer lugar, gracias y Feliz Navidad.

Como indico en la respuesta \"si que es esa columna\", creo una tabla sin triggers asociados, y se me produce el mismo error.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Debugeala.

Publicado por jorge (87 intervenciones) el 20/12/2002 22:09:38
Porque no tratas de Debugear tu forma para ver los valores de las variables,.. lo mas probable es que el error te esté dando por otra columna o variable,.. y no por la que sospechas (si es que la variable si lleva Espacios en blanco (ej: A := ' espacio_en_blanco_hecho_con_la_barra_espaciadora' ))

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

si que es esa columna

Publicado por antonio (23 intervenciones) el 23/12/2002 10:02:00
Antes de nada, muchas gracias y Feliz Navidad.

He probado en varias versiones este ejemplo:

create table tabla (columna varchar2(5) not null);

Y he creado una forma que solo contiene un botón. En el WHEN-BUTTON-PRESSED con el siguiente código:
DECLARE
v varchar2 (5);
BEGIN
v := '5 espacios en blanco con la barra';
insert into tabla (v);
END;

Y se me produce el error en las distintas versiones de Developer 6i. Con developer 2000 no se me produce el error.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Errores con Insert y Update - Ayuda!!!!

Publicado por Ricardo B. Caffarena (3 intervenciones) el 27/01/2003 22:19:25
Antonio: El hecho que no deje insertar valores nulos es propio de la definicion de la tabla. Vos mismo has dicho que los campos de la tabla no admite nulos.
Ademas la sintaxis variable := "" Oracle ya la considera como NULL.
Por eso es que te lo convierte a nulo.
El tema es, si los campos son NOT NULL deberias ingresarles algun valor, o sino cambiar la definicion de esos campos de la tabla.
Saludos, Ricardo B. Caffarena
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Gracia Ricardo, Pero ...

Publicado por Antonio (23 intervenciones) el 28/01/2003 12:31:42
El hecho es que por una serie de razones, tengo que guardar en una tabla una cadena que es igual a tres espacios en blanco (cad := ' ') en una columna definida como not null, y el hecho es que oracle lo convierte a nulo al hacer el insert /update cuando pongo:
insert into tabla values (.....,cad,....); En cambio si pongo :
insert into tabla values (.....,' ',.....); o
insert into tabla values (.....,nvl(cad,' '),......) lo hace correctamente. Pero mi pregunta es, ¿ Por qúe me pierde el valor la variable cad?

Muchas, gracias de nuevo.
Salu2
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar