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

¿trabajar con fecha y auto incremento en los P.A?

Estas en el tema de ¿trabajar con fecha y auto incremento en los P.A? en el foro de Mysql en Foros del Web. Hola amigos... pensaba que despues de los post en los que me ayudaron no tendria problemas pero estoy haciendo un nuevo procedimiento almacenado y no ...
  #1 (permalink)  
Antiguo 27/12/2009, 08:51
Avatar de Copia  
Fecha de Ingreso: noviembre-2009
Mensajes: 309
Antigüedad: 14 años, 5 meses
Puntos: 4
¿trabajar con fecha y auto incremento en los P.A?

Hola amigos... pensaba que despues de los post en los que me ayudaron no tendria problemas pero estoy haciendo un nuevo procedimiento almacenado y no se donde esta el error.

Código:
CREATE PROCEDURE `tienda`.`PA_Venta` (xIdcliente INT, xIdempleados int,
                         Idproducto int, xcantidad Numeric(18,2),
                         xPrecioUnit Numeric (18,2))
BEGIN
        declare xfecha datetime;
        declare xtotal(numeric(18,2));

        set xfecha=select current_date();
        set xtotal=select (xcantidad * xPrecioUnit);

        Insert into ventas(fecha,Idcliente,Idempleados,Idproducto,cantidad,PrecioUnit,total)
        values(xfecha,xIdcliente,xIdempleados,xIdproducto,xcantidad,xPrecioUnit,xtotal);

END
La tabla ventas tiene un idventas que no pongo en el insert porque se que se agrega solo.
La declaracion de fecha es para recojer la fecha actual y luego almacenarlo en el insert al igual que el total.

Al ejecutar me da error 1064 que es de sintaxis en los set o declaraciones.
  #2 (permalink)  
Antiguo 27/12/2009, 08:59
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 3 meses
Puntos: 360
Respuesta: ¿trabajar con fecha y auto incremento en los P.A?

no tienes que declarar una variable datetime para insertar la fecha.
Lo puedes ingresar en la misma sentencia insert.
Código SQL:
Ver original
  1. INSERT INTO ventas(fecha,Idcliente,Idempleados,Idproducto,cantidad,PrecioUnit,total)
  2.         VALUES(CURRENT_DATE(),xIdcliente,xIdempleados,xIdproducto,xcantidad,xPrecioUnit,xtotal);

cuando haces
select (xcantidad * xPrecioUnit);
estos son campos de alguna tabla?
estas llamando erroneamente este tipo de funciones.
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #3 (permalink)  
Antiguo 27/12/2009, 09:05
Avatar de Copia  
Fecha de Ingreso: noviembre-2009
Mensajes: 309
Antigüedad: 14 años, 5 meses
Puntos: 4
Respuesta: ¿trabajar con fecha y auto incremento en los P.A?

Cita:
Iniciado por huesos52 Ver Mensaje
cuando haces
select (xcantidad * xPrecioUnit);
estos son campos de alguna tabla?
estas llamando erroneamente este tipo de funciones.
hola, esos datos los voy a enviar por php, son parametros que estan en la definicion del procedimiento, por eso lo uso asi, lo que estoy dudando esque se multiplique.
  #4 (permalink)  
Antiguo 27/12/2009, 09:41
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 3 meses
Puntos: 360
Respuesta: ¿trabajar con fecha y auto incremento en los P.A?

No declares variables. haz el insert directamente

Código SQL:
Ver original
  1. INSERT INTO ventas(fecha,Idcliente,Idempleados,Idproducto,cantidad,PrecioUnit,total)
  2. VALUES(CURRENT_DATE(),xIdcliente,xIdempleados,xIdproducto,xcantidad,xPrecioUnit,
  3. xcantidad * xPrecioUnit);

prueba y nos cuentas
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #5 (permalink)  
Antiguo 27/12/2009, 10:23
Avatar de Copia  
Fecha de Ingreso: noviembre-2009
Mensajes: 309
Antigüedad: 14 años, 5 meses
Puntos: 4
Respuesta: ¿trabajar con fecha y auto incremento en los P.A?

Gracias ahora luego lo pruebo.

Saludos
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 19:59.