Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > MySQL
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 16-06-2008
Avatar de tcp_ip_es
tcp_ip_es tcp_ip_es is offline
No confirmado
 
Registrado: ago 2003
Ubicación: Madrid
Posts: 635
Poder: 0
tcp_ip_es Va por buen camino
llamar Procedimiento almacenado en una consulta

Hola, estoy probando los Procedimientos Almacenados en MySQL y tengo una duda de lo más tonta o no no se... je je je os cuento.... he creado este procedimiento almacenado:

Código:
CREATE PROCEDURE `FxSPA`(IN wfx int, OUT wmes varchar(50))
BEGIN
select CASE wfx
when 1 then 'Enero'
when 2 then 'Febrero'
when 3 then 'Marzo'
when 4 then 'Abril'
when 5 then 'Mayo'
when 6 then 'Junio'
when 7 then 'Julio'
when 8 then 'Agosto'
when 9 then 'Septiembre'
when 10 then 'Octubre'
when 11 then 'Noviembre'
when 12 then 'Diciembre'
end  into wmes;
END
El procedimiento funciona si le llamo asi:

Código:
call fxSPA(5,@mes);

select @mes;
y me saldría "Mayo" como resultado.

Ahora lo que yo quiero es llamar a esa Procedure dentro de una consulta para que me saque el mes de una Fecha algo tal que asi....

Código SQL [-]
select call(month(fecha),@mes) 
from facturas

por supuesto el código de arriba no funciona pero es que no se como hacerlo....

espero que me digais como, muchas gracias de antemano. Saludos, Tony
Responder Con Cita
  #2  
Antiguo 16-06-2008
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.556
Poder: 25
egostar Va camino a la fama
Solo una pregunta, para que hacer esto en un SP si no estas usando ningun dato de la base de datos, no sería mas fácil usar constantes directamente en Delphi?

Código Delphi [-]
Conts
   Meses : Array [1..12] of string = ('Enero', 'Febrero', 'Marzo', 'Abril', 'Mayo', 'Junio', 
                                      'Julio', 'Agosto', 'Septiembre', 'Octubre', 'Novembre', 'Diciembre');

Y lo llamas así

Código Delphi [-]
ShowMessage('Mes seleccionado: '+Meses[5]);

Salud OS
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney
Responder Con Cita
  #3  
Antiguo 16-06-2008
Avatar de poliburro
[poliburro] poliburro is offline
Miembro Premium
 
Registrado: ago 2004
Ubicación: México D.F
Posts: 3.068
Poder: 23
poliburro Va por buen camino
Cita:
Empezado por tcp_ip_es Ver Mensaje
Hola, estoy probando los Procedimientos Almacenados en MySQL y tengo una duda de lo más tonta o no no se... je je je os cuento.... he creado este procedimiento almacenado:

Código:
CREATE PROCEDURE `FxSPA`(IN wfx int, OUT wmes varchar(50))
BEGIN
select CASE wfx
when 1 then 'Enero'
when 2 then 'Febrero'
when 3 then 'Marzo'
when 4 then 'Abril'
when 5 then 'Mayo'
when 6 then 'Junio'
when 7 then 'Julio'
when 8 then 'Agosto'
when 9 then 'Septiembre'
when 10 then 'Octubre'
when 11 then 'Noviembre'
when 12 then 'Diciembre'
end  into wmes;
END
El procedimiento funciona si le llamo asi:

Código:
call fxSPA(5,@mes);
 
select @mes;
y me saldría "Mayo" como resultado.

Ahora lo que yo quiero es llamar a esa Procedure dentro de una consulta para que me saque el mes de una Fecha algo tal que asi....


Código SQL [-]select call(month(fecha),@mes)
from facturas




por supuesto el código de arriba no funciona pero es que no se como hacerlo....

espero que me digais como, muchas gracias de antemano. Saludos, Tony

No es un Sp lo que debes hacer para eso, sino una función.

Saludos.
__________________
Conoce mi blog http://www.edgartec.com
Responder Con Cita
  #4  
Antiguo 17-06-2008
Avatar de tcp_ip_es
tcp_ip_es tcp_ip_es is offline
No confirmado
 
Registrado: ago 2003
Ubicación: Madrid
Posts: 635
Poder: 0
tcp_ip_es Va por buen camino
Gracias a los dos, al final como bien ha dicho poliburro, me he hecho una funcion....

Código SQL [-]
CREATE FUNCTION `FMesLiteral`(wfx DATETIME) RETURNS varchar(10)
BEGIN
declare wmes varchar(50);
set wmes='';
CASE month(wfx)
when 1 then set wmes='Enero';
when 2 then set wmes='Febrero';
when 3 then set wmes='Marzo';
when 4 then set wmes='Abril';
when 5 then set wmes= 'Mayo';
when 6 then set wmes='Junio';
when 7 then set wmes='Julio';
when 8 then set wmes='Agosto';
when 9 then set wmes='Septiembre';
when 10 then set wmes='Octubre';
when 11 then set wmes='Noviembre';
when 12 then set wmes='Diciembre';
end CASE;
RETURN wmes;
END

y luego la he llamado desde el select:

Código SQL [-]
Select FMesLiteral(Fx_Factura) from Facturas

Para Egostar decirte que si que utilizo un dato de la BD que es el campo Fx_Factura que es donde meto la fecha de la factura.... de hecho saco más datos y los concateno pero por no liaros lo simplifiqué....

lo dicho muchas gracias por todo, Saludos, Tony

P.D. Y todo esto viene porque la versión que tengo de MySQL la funcion DATE_FORMAT (Fecha, '%M') sale el literal en inglés.... je je je
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Como llamar a un procediento almacenado desde delphi hperez Conexión con bases de datos 1 25-05-2007 18:31:52
Consulta dinámica en procedimiento almacenado Ivanzinho Firebird e Interbase 2 24-10-2005 15:26:27
Ayuda, como llamar a un procedimiento desde otro procedimiento? Ariatna Varios 1 01-02-2005 04:05:35
ayuda al llamar un procedimiento... ronimaxh Firebird e Interbase 8 27-04-2004 01:53:33
llamar procedimiento cmgenny Varios 2 12-08-2003 00:28:13


La franja horaria es GMT +2. Ahora son las 19:55:05.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi