Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Oracle »

Problema con trigger y count

Estas en el tema de Problema con trigger y count en el foro de Oracle en Foros del Web. Tengo un trigger que se acciona al hacer un insert, y que entra a un if si no existen registros, pero me tira un error ...
  #1 (permalink)  
Antiguo 25/11/2012, 17:16
 
Fecha de Ingreso: junio-2011
Mensajes: 289
Antigüedad: 12 años, 10 meses
Puntos: 15
Problema con trigger y count

Tengo un trigger que se acciona al hacer un insert, y que entra a un if si no existen registros, pero me tira un error

Código SQL:
Ver original
  1. CREATE OR REPLACE TRIGGER TR_AGREGAR_CLIENTE
  2.  
  3. BEFORE INSERT ON Venta
  4. FOR EACH ROW
  5. DECLARE
  6. X NUMBER:= 0;
  7. BEGIN
  8. SELECT COUNT(*) INTO x FROM Cliente WHERE codigo = :NEW.Cliente;
  9. IF X = 0
  10. THEN
  11. INSERT INTO bodega VALUES ('1001','Venta',50, SYSDATE);
  12. END IF;
  13. END;
el error es ERROR at line 7: PL/SQL: ORA-00947: no hay suficientes valores

Última edición por gnzsoloyo; 25/11/2012 a las 17:52 Razón: Mal etiquetado.
  #2 (permalink)  
Antiguo 25/11/2012, 17:55
Avatar de 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: Problema con trigger y count

Muy probablemente el error esté en esta sentencia:
Código SQL:
Ver original
  1. INSERT INTO bodega
  2. VALUES ('1001','Venta',50, SYSDATE);

Para funcionar correctamente, la tabla "bodega" debería tener cuatro columnas, ni más ni menos.
¿Estás seguro de que son cuatro columnas, o hay alguna otra?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 25/11/2012, 17:58
 
Fecha de Ingreso: junio-2011
Mensajes: 289
Antigüedad: 12 años, 10 meses
Puntos: 15
Respuesta: Problema con trigger y count

asi es, de hecho lo que me marca oracle g10 como linea de error es esta
Código:
SELECT count(*) INTO x FROM Cliente WHERE codigo = :new.Cliente;
  #4 (permalink)  
Antiguo 25/11/2012, 19:05
Avatar de 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: Problema con trigger y count

Error.
Lo que te marca es la linea donde el error se produce, pero no es necesariamente la que crees. Las líneas, hasta lo que sé, se cuentan desde la primera linea que corresponda al cuerpo del script, incluyendo las declaraciones, pero sin tener en cuenta el header de la definición.
La linea 7 es
Código SQL:
Ver original
  1. INSERT INTO bodega VALUES ('1001','Venta',50, SYSDATE);
Además, si te tomas el trabajo de googlear el código ORA-00947, descubirás que el problema se relaciona con los INSERT, y no habitualmente con los SELECT.
En el caso del SELECT sólo está documentado cuando se comapra uno o más campos contra el resultante de una subconsulta, y no se está indicando la misma cantidad de columnas, como por ejemplo
Código MySQL:
Ver original
  1. SELECT a, b, c
  2. FROM tabla
  3. WHERE a IN(SELECT d, e FROM tabla2);
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 25/11/2012, 19:09
 
Fecha de Ingreso: junio-2011
Mensajes: 289
Antigüedad: 12 años, 10 meses
Puntos: 15
Respuesta: Problema con trigger y count

Ok revisare las tablas gracias por la ayuda

Etiquetas: count, pl-sql, select, trigger
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 12:31.