Ver Mensaje Individual
  #3 (permalink)  
Antiguo 26/06/2012, 17:16
Avatar de gnzsoloyo
gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Insertar Null en un FOREING KEY

El código que pones está incompleto y parece haber una confusión en el uso de las variables.
Acuérdate que no estás trabajando en SQL Server. Una variable var y @var, son dos variables diferentes.

Acá puedes ver el caso:
Código MySQL:
Ver original
  1. DECLARE sentencia VARCHAR(2000);
  2.         DECLARE var_cargo VARCHAR(1000);
  3.         DECLARE var_eliminado VARCHAR(1);
  4.         DECLARE var_emp_id INT;
  5.  
  6.         SET @var_eliminado = '0';
  7.        
  8.         IF p_emp_id = '' THEN
  9.             SET @var_emp_id = 'NULL';
  10.         ELSE
  11.             SET @var_emp_id = p_emp_id;
  12.         END IF;
  13.  
  14.         IF p_cargo = '' THEN
  15.             SET @var_cargo = 'NULL';
  16.         ELSE
  17.             SET @var_cargo = p_cargo;
  18.         END IF;


Además, hay algunas otras consideraciones:
1) Las variables con "@" son variables de sesión y su valor es NULL hasta ser inicalizadas, por lo que no sirven para comparaciones antes de eso.
2) NULL y 'NULL' son cosas diferentes. Uno es un estado, el otro es una cadena de texto.
3) Si p_cargo (que no sabemos de donde viene) es NULL,
Código MySQL:
Ver original
  1. DECLARE var_emp_id INT;
  2.  
  3.         IF p_emp_id = '' THEN
  4.             SET @var_emp_id = 'NULL';
  5.         ELSE
  6.             SET @var_emp_id = p_emp_id;
  7.         END IF;
saldrá por el ELSE, porque no es lo mismo un espacio vacío que NULL.

Por favor, postea todo el cuerpo del código, sin recortar, y explicanos qué error te da.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Última edición por gnzsoloyo; 26/06/2012 a las 18:36