PDA

Ver la Versión Completa : Procedimiento en Firebird con parámetro NULL


Val
06-07-2007, 13:48:23
Hola foro!

Tengo un procedimiento en Firebird que recibe una serie de parámetros y uno de ellos en alguna ocasión puede ser nulo. Si lo ejecuto con IBExpert y marco este argumento como nulo va bien, pero desde mi código no logro pasar este argumento como nulo, me lo toma como 0 con lo que el resultado obtenido no es el deseado.

Gracias

jhonny
06-07-2007, 15:01:21
Pero, ¿Porque no puedes hacerlo desde tu codigo?, ¿Te muestra algún error?, Seguramente sera de ayuda que nos muestres el codigo en cuestión.

Val
06-07-2007, 16:20:45
En firebird tengo un procedimiento almacenado:


CREATE PROCEDURE REGISTRAR (
mivariable smallint)
as
begin
// Aquí va mi código
end


Y si ejecuto este procedimiento con el IBExpert marcando "mivariable" como NULL pues no pasa nada.

En cambio en mi aplicación tengo el código:


procedimiento.Clear;
procedimiento.ParamByName('mivariable').AsString := 3;
procedimiento.Prepare;
procedimiento.ExecProc;


Si en la segunda linea ponto 3, 4 o algún otro número mi base de datos se modifica correctamente, pero si no doy valor a ese parámetro o trato de ponerle a nulo me modifica la base de datos igual que si le paso un cero.

mamaro
06-07-2007, 18:13:38
Hola .. no tengo un delphi a mano ahora pero, creo que por más que sean parámetros en null se les debe asignar el valor de la siguiente forma:

...parambyname('nombredelparametro').value:=null;

Val
09-07-2007, 08:08:07
Eso ya lo he probado y en el procedimiento me toma ese parámetro como 0 en lugar de NULL.

Hasta que de con la forma de hacerlo "bien" he modificado el procedimiento de tal forma que nunca sea necesario recibir ese parámetro con valor 0 y que cuando detecte que tiene ese valor lo cambie a nulo.