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 08-10-2008
Lupita Lupita is offline
Miembro
 
Registrado: nov 2005
Posts: 40
Poder: 0
Lupita Va por buen camino
Post Procedimiento "multiple rous in singleton select"

en el siguientes esmas facil

Última edición por Lupita fecha: 08-10-2008 a las 21:37:42.
Responder Con Cita
  #2  
Antiguo 08-10-2008
Lupita Lupita is offline
Miembro
 
Registrado: nov 2005
Posts: 40
Poder: 0
Lupita Va por buen camino
mas simple

bueno como mando este query a un procedimiento

Código SQL [-]
SELECT OC.FECHA,  OC.CONCEPTO2,VT.folio factura,
       OC.REFERENCIA, OC.DEBE, OC.HABER,
       OC.FOLIO,  OC.TAG,CSB.caption,OC.TIPOMOV
FROM OC inner join CC on OC.CVECUENTA=CC.C_CLAVE
                      inner join CSB on CSB.tag= OC.TAG
                      inner join VT on VT.clave= OC.CONCEPTO2
 wHERE OC.SUJETO =  '00000102'
      AND OC.Fecha between '01/01/2008' and '12/31/2008'
      AND OC.CVECUENTA = 4
      and OC.tag not in(356,440,434,550,206,525)

union all
SELECT OC.FECHA,  OC.CONCEPTO2,VT.folio factura,
       OC.REFERENCIA, OC.DEBE, OC.HABER,
       OC.FOLIO,  OC.TAG,CSB.caption,OC.TIPOMOV
FROM OC inner join CC on OC.CVECUENTA=CC.C_CLAVE
                      inner join CSB on CSB.tag= OC.TAG
                      inner join AM on AM.clavemov= OC.REFERENCIA
                      inner join AMdetalle on(AM.cons=AMdetalle.claveaplica)
                      inner join PPaux on PPaux.clave=AMdetalle.clavePPaux
                      inner join PP on(PP.clave=PPaux.clavePP)
                      inner join VT on VT.clave= PP.clvVT
WHERE OC.SUJETO =  '00000102'
      AND OC.Fecha between '01/01/2008' and '12/31/2008'
      AND OC.CVECUENTA = 4
      and OC.tag not in(356,440,434,550,206,525)

ORDER BY 1, 3

en donde el resultado son las columnas y las variables de entreda son
'00000102' y el rango de fecha como le hago?

Última edición por jhonny fecha: 09-10-2008 a las 13:43:37. Razón: Colocar etiquetas [SQL]
Responder Con Cita
  #3  
Antiguo 09-10-2008
Avatar de jhonny
jhonny jhonny is offline
Jhonny Suárez
 
Registrado: may 2003
Ubicación: Colombia
Posts: 7.058
Poder: 30
jhonny Va camino a la famajhonny Va camino a la fama
Bueno, aunque no repare la logica del mismo apuesto que esto te puede servir...

Código SQL [-]
 
CREATE PROCEDURE NOMBRE_PROCEDIMIENTO (
    SUJETO varchar(10),
    FECHA_INICIAL date,
    FECHA_FINAL date)
returns (
    FECHA date,
    CONCEPTO2 varchar(10),
    FOLIO varchar(10),
    REFERENCIA varchar(255),
    DEBE double precision,
    HABER double precision,
    FOLIO_2 varchar(10),
    TAG integer,
    CAPTION varchar(255),
    TIPMOV varchar(10))
as
begin
  for SELECT OC.FECHA,  OC.CONCEPTO2,VT.folio factura,
       OC.REFERENCIA, OC.DEBE, OC.HABER,
       OC.FOLIO,  OC.TAG,CSB.caption,OC.TIPOMOV
  FROM OC inner join CC on OC.CVECUENTA=CC.C_CLAVE
                      inner join CSB on CSB.tag= OC.TAG
                      inner join VT on VT.clave= OC.CONCEPTO2
  WHERE OC.SUJETO =  :SUJETO
      AND OC.Fecha between :FECHA_INICIAL and :FECHA_FINAL
      AND OC.CVECUENTA = 4
      and OC.tag not in(356,440,434,550,206,525)
  union all
  SELECT OC.FECHA,  OC.CONCEPTO2,VT.folio factura,
         OC.REFERENCIA, OC.DEBE, OC.HABER,
         OC.FOLIO,  OC.TAG,CSB.caption,OC.TIPOMOV
  FROM OC inner join CC on OC.CVECUENTA=CC.C_CLAVE
                      inner join CSB on CSB.tag= OC.TAG
                      inner join AM on AM.clavemov= OC.REFERENCIA
                      inner join AMdetalle on(AM.cons=AMdetalle.claveaplica)
                      inner join PPaux on PPaux.clave=AMdetalle.clavePPaux
                      inner join PP on(PP.clave=PPaux.clavePP)
                      inner join VT on VT.clave= PP.clvVT
  WHERE OC.SUJETO =  :SUJETO
      AND OC.Fecha between :FECHA_INICIAL and :FECHA_FINAL
      AND OC.CVECUENTA = 4
      and OC.tag not in(356,440,434,550,206,525)
  ORDER BY 1, 3
  INTO :FECHA, :CONCEPTO2, :FOLIO, :REFERENCIA, :DEBE, :HABER, :FOLIO_2,
  :TAG, :CAPTION, :TIPMOV
  do
  begin
    suspend;
  end
end

NOTA: Por favor usa siempre las etiquetas necesarias, para que tu codigo se entienda mejor...
__________________
Lecciones de mi Madre. Tema: modificación del comportamiento, "Pará de actuar como tu padre!"

http://www.purodelphi.com/
http://www.nosolodelphi.com/
Responder Con Cita
  #4  
Antiguo 09-10-2008
lbuelvas lbuelvas is offline
Miembro
 
Registrado: may 2003
Ubicación: Colombia
Posts: 377
Poder: 22
lbuelvas Va por buen camino
El emnsaje "multiple rous in singleton select" aparece cuando en un procedimiento almacenado haces un "select...into", es decir, una consulta que arroja resultados a un conjunto de variables y el conjunto de regsitros retornado por el select es mayor a uno (> 1).

Si estas utilzandolo dentro de un for select ... no habria problema, pero me imagino que lo estas utilizando fuera de una clausula for select.

Lo que pasa es que las variables esperan recibir un valor o ningun valor (considerando que la consulta no arroja resultados entonces llegarian nulos a las variables).

Pero cuando una consulta arroja mas de un registro el procedimiento almacenado no puede continuar y te arroja ese mensaje, por tanto, debes garantizar que tu consulta envie siempre un unico registro, de lo contrario el procedimiento en algunas situaciones funcionara bien y en otras situaciones no.
__________________
Luis Fernando Buelvas T.
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
procedimiento "largo", con envio y recepcion serial emeceuy Varios 9 28-06-2008 16:26:45
Firebir y usar "IF" en la clausula "SELECT" papulo SQL 6 25-07-2006 21:38:04
"atrapar" la ejecución de un procedimiento jorgesl Varios 2 17-04-2006 19:39:10
Multiple Rows in singleton select IVAND SQL 4 14-08-2004 21:11:38
"no current record for fetch operation" con procedimiento almacenado usado en Select Al González Firebird e Interbase 1 17-03-2004 21:13:17


La franja horaria es GMT +2. Ahora son las 10:44:27.


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