Ver Mensaje Individual
  #1 (permalink)  
Antiguo 10/07/2013, 10:42
Avatar de ichigohollow
ichigohollow
 
Fecha de Ingreso: octubre-2009
Mensajes: 38
Antigüedad: 14 años, 5 meses
Puntos: 1
Pregunta [ayuda]problema con función en pgsql

saludos, esta función cuando la ejecuto me borra los datos de la tabla conceptodetalle, como si no tomara en cuenta la clausula where, y si descomento las otras lineas me borra el contenido de las 3 tablas.
Código SQL:
Ver original
  1. CREATE OR REPLACE FUNCTION borrarnomina(id_nomina INTEGER)
  2.   RETURNS INTEGER AS
  3. $$
  4. DECLARE
  5. tempo INTEGER;
  6. id alias FOR $1;
  7.  
  8. BEGIN
  9. RAISE NOTICE 'id(%)', id;
  10. DELETE FROM ONLY conceptodetalle WHERE id_nomina=id;
  11. --execute cadena into tempo;
  12. --if (FOUND)
  13.   -- then
  14.     --  delete from only detallenomina where id_nomina=$1;
  15. --      execute cadena into tempo;
  16.       --if (FOUND)
  17.         -- then
  18.           --  delete from only nomina where id_nomina=$1;
  19.             --execute cadena into tempo;
  20.             --if (FOUND) --tempo
  21.               -- then
  22. --                  commit;
  23.                 --  return 1;
  24.                --else
  25.                  -- rollback;
  26.                   --return 0;
  27.          --   end if;
  28.          --else
  29.            -- rollback;
  30.            -- return 0;
  31.       --end if;
  32.    --else
  33.      -- rollback;
  34.       --return 0;
  35. --end if;
  36. RETURN 1;
  37. END;
  38. $$
  39.   LANGUAGE 'plpgsql';

destaco que las tablas estan relacionados de la siguiente manera
nomina clave primaria: id_nomina
detallenomina clave primaria: (id_nomina , nronom); fk: id_nomina
concepto detalle clave primaria: (id_nomina, nronom, ccon); fk: (id_nomina,nronom)

no le veo ni pies ni cabeza. el raise notice lo coloque para saber si el parametro de entrada lo estaba tomando bien. alguna ayuda please..!!

edit: quiero agregar que si el delete lo ejecuto como una sentencia sql comun, el delete se ejecuta perfectamente, solo borrando los registros cuyo id_nomina sea el especificado.

Última edición por gnzsoloyo; 11/07/2013 a las 09:29