Ver Mensaje Individual
  #7 (permalink)  
Antiguo 22/07/2010, 11:24
saumal20
 
Fecha de Ingreso: diciembre-2008
Ubicación: sullana, Piura
Mensajes: 106
Antigüedad: 15 años, 4 meses
Puntos: 0
Respuesta: Manejo de fecha en procedimiento almacenados

Cita:
Iniciado por gnzsoloyo Ver Mensaje
Estás usando incorrectamente el nombre de las variables locales. Acuérdate de que no estás programando para SQL Server, sino para mySQL.
Las variables locales no tiene prefijos, si estás recibiendo la variable numerocomprobante, no se le debe poner el prefijo @numerocomprobante, porque esa sería otra variable diferente.
Sólo las variables de usuario (de sesión) usan prefijo, pero no las locales de un procedimiento.

Lo correcto sería:

Código MySQL:
Ver original
  1. CREATE procedure PA_8_actualizar_compras(IN numerocomprobante INT, IN motivoanulacioncompras TEXT)
  2.   DECLARE fehoanulacioncompra VARCHAR(19);
  3.   SELECT CURRENT_timestamp() INTO fehoanulacioncompra;
  4.   UPDATE compras
  5.   SET anulacioncompras = 1, fehoanulacioncompra = fehaanulacioncompra,
  6.         motivoanulacioncompras = motivoanulacioncompras;
  7.    WHERE numerocomprobantecompras = numerocomprobante;

Tips:
- No uses nombres tan largos. Terminarás teniendo problemas de sintaxis al tipearlos.
- No uses VARCHAR para almacenar un TIMESTAMP. Usa los tipos de datos correctos. Un TIMESTAMP tiene una longitud real en memoria y disco de 8 bytes, mientras que el VARCHAR necesita 19 para hacer lo mismo. Y eso es simplemente porque los datos de fecha y hora se almacenan como binarios y no como caracteres, al igual que los números.
mira lo deje asi:

Código MySQL:
Ver original
  1. create procedure PA_8_actualizar_compras(numerocomprobantes int(12), motivoanulacioncompras text)
  2.     BEGIN
  3.         DECLARE fehoanulacioncompra timestamp;
  4.         select CURRENT_timestamp() into @fehoanulacioncompra,
  5.         UPDATE compras
  6.         set anulacioncompras = 1, fehoanulacioncompra = @fehaanulacioncompra, motivoanulacioncompras = @motivoanulacioncompras;
  7.         WHERE numerocomprobantes= @numerocomprobantes;
  8.     END;

si tenia los @, solo ke me ekivoke al elegir el tipo de consulta, bueno igual me da error de sintaxis