Ver Mensaje Individual
  #5  
Antiguo 19-09-2012
Avatar de mightydragonlor
[mightydragonlor] mightydragonlor is offline
Miembro Premium
 
Registrado: feb 2007
Ubicación: Medellín-Colombia
Posts: 587
Reputación: 18
mightydragonlor Va por buen camino
Casimiro, lo que creo que quiere hacer es un select en el store procedure, para este ejemplo, paso a dar un ejemplo de mis procedimientos de consultas en firebird, espero te ayude en algo.

Código SQL [-]
SET TERM ^ ;
CREATE PROCEDURE SP_LISTAR_INDICADORES (
    FECHA_INICIAL TYPE OF FECHA,
    FECHA_FINAL TYPE OF FECHA,
    USU_UUID_IN TYPE OF UUID_CHAR )
RETURNS (
    FECHA TYPE OF DESCRIPCION,
    USUARIO TYPE OF DESCRIPCION,
    CENTRO_OPERATIVO TYPE OF DESCRIPCION,
    TIPO_USUARIO TYPE OF DESCRIPCION,
    MAQUINA TYPE OF DESCRIPCION,
    TIPO_MAQUINA TYPE OF DESCRIPCION,
    DELGADOS TYPE OF CANTIDAD,
    CRUDOS TYPE OF CANTIDAD,
    MELAMINA TYPE OF CANTIDAD,
    DELGADO TYPE OF CANTIDAD,
    RIGIDO TYPE OF CANTIDAD,
    COMENTARIO TYPE OF "PASSWORD" )
AS
BEGIN
FOR SELECT
    CASE (EXTRACT(MONTH FROM I.IND_FECHA))
    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,
    U.USU_NOMBRE,
    '#'||U.USU_CENTRO_OPERATIVO,
    TU.TIPO_USU_NOMBRE,
    M.MAQ_NOMBRE,
    TM.TIPO_MAQ_NOMBRE,
    SUM(COALESCE(I.IND_DELGADOS,0)),
    SUM(COALESCE(I.IND_CRUDOS,0)),
    SUM(COALESCE(I.IND_LAMINA,0)),
    SUM(COALESCE(I.IND_DELGADO,0)),
    SUM(COALESCE(I.IND_RIGIDO,0)),
    'LOS VALORES SON LA SUMATORIA DE LOS MOVIMIENTOS DEL MES.'
FROM
    TBLINDICADORES I
    INNER JOIN TBLUSUARIOS U ON I.USU_UUID = U.USU_UUID
    INNER JOIN TBLTIPOUSUARIO TU ON U.TIPO_USU = TU.TIPO_USU_UUID
    INNER JOIN TBLMAQUINAS M ON I.MAQ_UUID = M.MAQ_UUID
    INNER JOIN TBLTIPOMAQUINA TM ON M.TIPO_MAQ_UUID = TM.TIPO_MAQ_UUID 
WHERE
    I.IND_FECHA BETWEEN :FECHA_INICIAL AND :FECHA_FINAL
    AND I.USU_UUID = COALESCE(CHAR_TO_UUID(:USU_UUID_IN), I.USU_UUID)
GROUP BY
    EXTRACT(MONTH FROM I.IND_FECHA),
    U.USU_NOMBRE, U.USU_CENTRO_OPERATIVO, TU.TIPO_USU_NOMBRE,
    M.MAQ_NOMBRE, TM.TIPO_MAQ_NOMBRE
INTO
    :FECHA,
    :USUARIO,
    :CENTRO_OPERATIVO,
    :TIPO_USUARIO,
    :MAQUINA,
    :TIPO_MAQUINA,
    ELGADOS,
    :CRUDOS,
    :MELAMINA,
    ELGADO,
    :RIGIDO,
    :COMENTARIO
DO
BEGIN
  SUSPEND;
END
END^
SET TERM ; ^

GRANT EXECUTE
 ON PROCEDURE SP_LISTAR_INDICADORES TO  SYSDBA;

Los parámetros de entrada son:
FECHA_INICIAL
FECHA_FINAL
USU_UUID_IN
Los que se encuentran dentro de RETURNS (...), son los parámetros de salida, es decir, un select en un sp en Firebird, requiere que las columnas sean entregadas a parámetros de salida.

Saludos.
__________________
mas confundido que Garavito el día del Niño.

Última edición por mightydragonlor fecha: 19-09-2012 a las 04:10:26. Razón: Arreglos menores =)
Responder Con Cita