Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 07-04-2014
elrockdelpais elrockdelpais is offline
Registrado
NULL
 
Registrado: abr 2014
Posts: 1
Poder: 0
elrockdelpais Va por buen camino
Stored Procedure en Firebird

Hola gente, ante todo me presento, mi nombre es Alejandro y soy programador. Es la primera vez que trabajo con Firebird y me estoy volviendo loco con el siguiente stored procedure:

Cita:

CREATE PROCEDURE REPORTE_COMPARATIVAVENTAPESOS
(FECHADESDE date,
FECHAHASTA date)


AS

BEGIN

SELECT M.DESCRIPCION AS MARCA,SR.DESCRIPCION AS RUBRO, SUM(C.TOTAL) AS TOTAL
FROM CUERPOCOMPROBANTES CC
INNER JOIN CABEZACOMPROBANTES C ON CC.NUMEROCOMPROBANTE = C.NUMEROCOMPROBANTE
INNER JOIN ARTICULOS A ON CC.CODIGOARTICULO = A.CODIGOARTICULO
INNER JOIN MARCAS M ON A.CODIGOMARCA = M.CODIGOMARCA
INNER JOIN RUBROS R ON A.CODIGORUBRO = R.CODIGORUBRO
INNER JOIN SUPERRUBROS SR ON R.CODIGOSUPERRUBRO = SR.CODIGOSUPERRUBRO
WHERE (C.FECHACOMPROBANTE BETWEEN :FECHADDE AND :FECHAHTA)
AND (C.TIPOCOMPROBANTE = 'FA'
OR C.TIPOCOMPROBANTE = 'FB'
OR C.TIPOCOMPROBANTE = 'NCA'
OR C.TIPOCOMPROBANTE = 'NCB'
OR C.TIPOCOMPROBANTE = 'NDA'
OR C.TIPOCOMPROBANTE = 'NDB')
GROUP BY M.DESCRIPCION,SR.DESCRIPCION

END^

el cual me da el siguiente error:

Cita:

Message: isc_dsql_prepare failed

SQL Message : -104
Invalid token

Engine Code : 335544436
Engine Message :
SQL error code = -104
Token unknown - line 12, column 5
END

Por favor, estoy haciendo un trabajo y lo unico que me esta faltando para terminarlo es ese stored. Si alguien me puede dar una mano con eso se lo agradeceria.
Responder Con Cita
  #2  
Antiguo 07-04-2014
aposi aposi is offline
Miembro
 
Registrado: dic 2006
Posts: 146
Poder: 18
aposi Va por buen camino
Código SQL [-]
WHERE (C.FECHACOMPROBANTE BETWEEN :FECHADDE AND :FECHAHTA)
los parametros son :FECHADESDE AND :FECHAHASTA
Responder Con Cita
  #3  
Antiguo 07-04-2014
Avatar de duilioisola
[duilioisola] duilioisola is offline
Miembro Premium
 
Registrado: ago 2007
Ubicación: Barcelona, España
Posts: 1.734
Poder: 20
duilioisola Es un diamante en brutoduilioisola Es un diamante en brutoduilioisola Es un diamante en bruto
Te falta un ;
Código SQL [-]
CREATE PROCEDURE REPORTE_COMPARATIVAVENTAPESOS
(FECHADESDE date,
FECHAHASTA date)
AS
BEGIN
SELECT M.DESCRIPCION AS MARCA,SR.DESCRIPCION AS RUBRO, SUM(C.TOTAL) AS TOTAL
FROM CUERPOCOMPROBANTES CC
INNER JOIN CABEZACOMPROBANTES C ON CC.NUMEROCOMPROBANTE = C.NUMEROCOMPROBANTE
INNER JOIN ARTICULOS A ON CC.CODIGOARTICULO = A.CODIGOARTICULO
INNER JOIN MARCAS M ON A.CODIGOMARCA = M.CODIGOMARCA
INNER JOIN RUBROS R ON A.CODIGORUBRO = R.CODIGORUBRO
INNER JOIN SUPERRUBROS SR ON R.CODIGOSUPERRUBRO = SR.CODIGOSUPERRUBRO
WHERE (C.FECHACOMPROBANTE BETWEEN :FECHADDE AND :FECHAHTA)
AND (C.TIPOCOMPROBANTE = 'FA'
OR C.TIPOCOMPROBANTE = 'FB'
OR C.TIPOCOMPROBANTE = 'NCA'
OR C.TIPOCOMPROBANTE = 'NCB'
OR C.TIPOCOMPROBANTE = 'NDA'
OR C.TIPOCOMPROBANTE = 'NDB')
GROUP BY M.DESCRIPCION,SR.DESCRIPCION; /* Falta ; aqui */
END^

De todos modos supongo que quieres que te devuelva algo. Debes agregar la sentencia SUSPEND y meter el resultado dentro de variables de retorno.
Como supongo que devuelve más de un registro, debes utilizar un bucle FOR SELECT INTO VARIABLES DO.
Código SQL [-]
CREATE PROCEDURE REPORTE_COMPARATIVAVENTAPESOS
(FECHADESDE date,
FECHAHASTA date)
RETURNS (MARCA varchar(10), RUBRO varchar(10), TOTAL double precision)
AS
BEGIN
/* Genero un bucle mediante FOR SELECT INTO :VAR DO*/
FOR SELECT M.DESCRIPCION AS MARCA,SR.DESCRIPCION AS RUBRO, SUM(C.TOTAL) AS TOTAL
    FROM CUERPOCOMPROBANTES CC
    INNER JOIN CABEZACOMPROBANTES C ON CC.NUMEROCOMPROBANTE = C.NUMEROCOMPROBANTE
    INNER JOIN ARTICULOS A ON CC.CODIGOARTICULO = A.CODIGOARTICULO
    INNER JOIN MARCAS M ON A.CODIGOMARCA = M.CODIGOMARCA
    INNER JOIN RUBROS R ON A.CODIGORUBRO = R.CODIGORUBRO
    INNER JOIN SUPERRUBROS SR ON R.CODIGOSUPERRUBRO = SR.CODIGOSUPERRUBRO
    WHERE (C.FECHACOMPROBANTE BETWEEN :FECHADDE AND :FECHAHTA)
    AND (C.TIPOCOMPROBANTE = 'FA'
    OR C.TIPOCOMPROBANTE = 'FB'
    OR C.TIPOCOMPROBANTE = 'NCA'
    OR C.TIPOCOMPROBANTE = 'NCB'
    OR C.TIPOCOMPROBANTE = 'NDA'
    OR C.TIPOCOMPROBANTE = 'NDB')
    GROUP BY M.DESCRIPCION,SR.DESCRIPCION
    INTO :MARCA, :RUBRO, TOTAL
DO
   SUSPEND;
END^
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
Problema con Stored Procedure de Firebird edgwin Conexión con bases de datos 3 11-04-2012 22:13:00
Stored Procedure en Firebird complejo gluglu Firebird e Interbase 9 29-07-2011 00:39:59
Enviar Email desde Stored Procedure Firebird dandia28 SQL 1 16-06-2011 09:36:27
Stored Procedure 2 Bases Firebird Joe_Balda Firebird e Interbase 2 06-06-2011 21:04:09
Ayuda con Stored Procedure Firebird Blackspike Firebird e Interbase 4 07-01-2008 18:18:39


La franja horaria es GMT +2. Ahora son las 02:36:23.


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