Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 08-10-2019
IVAND IVAND is offline
Miembro
 
Registrado: may 2003
Ubicación: ECUADOR
Posts: 523
Poder: 21
IVAND Va por buen camino
Select con funcion IN como parametro

Hola a todos
Tengo una duda con la funcion In ,
Este es mi SP
Variable definica en el store procedure
Código:
    KEY_FLUJO integer,
    NOMBRE_CUENTA varchar(200),
    CUENTA varchar(50),
    MONTO numeric(15,2),
    LISTA varchar(100),
Código:
FOR select x.key_flujo, 
x.nombre_cuenta, 
X.cuenta,
x.cuentas_afectan
Esta es la cadena que contiene los valores (58,533,23,419,492,29,544,536,576,577,283,284)
Código:
 from flujo_efectivo x  into :key_flujo,:nombre_cuenta,:cuenta,:lista Do
 Begin
  select sum(d.debe-d.haber)
    from cab_diario c ,det_diario d
    where c.key_cab_diario=d.key_cab_diario
    and c.estado='T'
    and extract(year from c.fecha_diario)=:anio
    and d.key_plan_ctas in into :monto ;
sale obvio error de convertir a string, por el parametro que se pasa al IN , alguien de ustedes ha tenido esta duda y como lo ha podido solucionar desde un store procedure

Probe tambien remplazado la variable :lista por este select y no arroja valor alguno
Código SQL [-]
select sum(debe-haber)
from cab_diario c,det_diario d
where c.key_cab_diario = d.key_cab_diario
and c.estado='T'
and extract(year from c.fecha_diario)=2018
and d.key_plan_ctas in (select list(tx.cuentas_afectan) from flujo_efectivo tx where tx.key_flujo=172)
si funciona logicamente si hago esto
Código SQL [-]
select sum(d.debe-d.haber)
 from cab_diario c , det_diario d where c.key_cab_diario=d.key_cab_diario
  and c.estado='T' and extract(year from c.fecha_diario)=:anio
  and d.key_plan_ctas in (58,533,23,419,492,29,544,536,576,577,283,284)



Gracias por su tiempo
__________________
IVAND

Última edición por Casimiro Notevi fecha: 08-10-2019 a las 12:57:44. Razón: Se ve mal el tema
Responder Con Cita
  #2  
Antiguo 08-10-2019
IVAND IVAND is offline
Miembro
 
Registrado: may 2003
Ubicación: ECUADOR
Posts: 523
Poder: 21
IVAND Va por buen camino
Este es el store procedure no se porque arriba sale tan mal
Código SQL [-]
create or alter procedure SP_FLUJO_EFECTIVO (
    ANIO integer)
returns (
    KEY_FLUJO integer,
    NOMBRE_CUENTA varchar(200),
    CUENTA varchar(50),
    MONTO numeric(15,2),
    LISTA varchar(100),
    LISTA2 varchar(10))
as
begin
 FOR select x.key_flujo, x.nombre_cuenta, X.cuenta,x.cuentas_afectan
 from flujo_efectivo x where x.key_flujo=172 into :key_flujo,:nombre_cuenta,:cuenta,:lista Do
 Begin
  select sum(d.debe-d.haber)
    from cab_diario c ,det_diario d
    where c.key_cab_diario=d.key_cab_diario
    and c.estado='T'
    and extract(year from c.fecha_diario)=:anio
    and d.key_plan_ctas in (:lista) into :monto ;
  /* Procedure Text */
  suspend;

 End
end
__________________
IVAND

Última edición por Casimiro Notevi fecha: 08-10-2019 a las 12:58:57.
Responder Con Cita
  #3  
Antiguo 08-10-2019
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.043
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Prueba a cambiar el 'in' por el 'exists'.
Responder Con Cita
  #4  
Antiguo 08-10-2019
Avatar de TOPX
TOPX TOPX is offline
Miembro
 
Registrado: may 2008
Ubicación: Bogotá
Posts: 527
Poder: 17
TOPX Va camino a la fama
Hola

Por su sintaxis, parece que utilizara Firebird. Aunque no estoy seguro.

De todas maneras,
-
__________________
"constructive mind, destructive thoughts"
Responder Con Cita
  #5  
Antiguo 09-10-2019
IVAND IVAND is offline
Miembro
 
Registrado: may 2003
Ubicación: ECUADOR
Posts: 523
Poder: 21
IVAND Va por buen camino
Si disculpa utilizo firebird 2.5
__________________
IVAND
Responder Con Cita
  #6  
Antiguo 09-10-2019
IVAND IVAND is offline
Miembro
 
Registrado: may 2003
Ubicación: ECUADOR
Posts: 523
Poder: 21
IVAND Va por buen camino
Gracias por su respuesta , pero exists no funciona ya que lo que estoy pasando es una cadena

formada de esta manera en la base de datos


select sum(d.debe-d.haber)
from cab_diario c , det_diario d where c.key_cab_diario=d.key_cab_diario
and c.estado='T' and extract(year from c.fecha_diario)=:anio
and d.key_plan_ctas in (58,533,23,419,492,29,544,536,576,577,283,284)

asi deberia armarse el query pero si paso la cadena desde la base da error de string
__________________
IVAND
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
Pasar Nombre de componenete como parametro de una funcion dandyuno C++ Builder 9 08-09-2015 01:59:02
Enviar BSTR como parámetro de funcion mordaz C++ Builder 2 16-08-2014 01:40:02
Pasar como parametro el where en una funcion cso2000 MS SQL Server 2 15-02-2005 02:49:47
pasar parametro a un procedimiento desde select hibero Firebird e Interbase 2 01-06-2004 19:58:42
Uso De Like De Select Con Parametro cmena Varios 2 05-05-2004 01:21:54


La franja horaria es GMT +2. Ahora son las 23:33:54.


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