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

 
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 13-08-2013
mjjj mjjj is offline
Miembro
 
Registrado: mar 2007
Posts: 652
Poder: 18
mjjj Va por buen camino
Procedimiento con condiciones dinamicas

Estimados, utilizo Firebird 2.5, y tengo el siguiente procedimiento almacenado llamado inventario_resumen, con la variable de entrada bodegas de tipo varchar:

Código SQL [-]
begin

for select id_item, i_s.nombre, i_s.id_clasificacion from insumos_servicios I_S
INNER JOIN clasificaciones c on c.id_clasificacion = i_s.id_clasificacion
where que_es = 'T' AND estructura = 0 into :id_item, :nombre, :id_clasificacion do
begin
execute statement
'select coalesce(sum(cantidad * precio)/sum(iif(cantidad = 0,1,cantidad)),0),
coalesce(sum(cantidad),0) from inventario
where id_item ='||:id_item||' and id_bodega in '||(:bodegas)
into recio_medio, :cantidad_ingreso;


execute statement
'select coalesce(avg(precio),0), coalesce(sum(cantidad),0) from inventario_egreso
where id_item ='||:id_item||' and id_bodega in '||(:bodegas)
into recio_egreso, :cantidad_egreso;

suspend;
end
end

el cual lo llamo se la siguiente forma:

Código SQL [-]
select id_item, nombre, cantidad_ingreso - cantidad_egreso saldo, precio_medio,
(cantidad_ingreso - cantidad_egreso) * precio_medio subtotal from inventario_resumen (:bodegas)
where cantidad_ingreso > cantidad_egreso

donde bodegas tienes el formato por ejemplo: (1,2,5), que serian los id de las bodegas a consultar.
EL problema es que la condiciones de busqueda las hago al resultado de la consulta al agregarle por ejemplo estas lineas a la llamada del procedimiento.

Código SQL [-]
and id_clasificacion =:id_clasificacion
and nombre like :nombre

... pero de igual forma el procedimiento recorre cada uno de los registros de la tabla "insumos_servicios"

He pensado en agregar mas variables de entraqda al procedimiento, tal que las condiciones se realicen directamente a la consulta original y así evitar tener que procesar todos los registros de la tabla "insumos_servicios"
Hasta aquí todo va bien, pero surge un problema, que ocurre si el usuario desea listar todos los registros, las nuevas condiciones no podría sacarlas del query original, y estaría obligado siempre tener alguna condicioin, ya que no podria, por ejemplo, quitar la linea del procedimiento

Código SQL [-]
and nombre like :nombre

Espero se entienda y me puedan ayudar a resolver esto.
Gracias
Responder Con Cita
 



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
Fecha con condiciones rufo Varios 17 07-04-2010 00:44:51
Paradox--->Condiciones lurad Tablas planas 2 19-09-2006 20:45:40
Condiciones Carlex SQL 7 09-08-2004 21:15:33
Condiciones en SQL agova SQL 5 20-07-2004 01:28:24
condiciones en interbase squenda Conexión con bases de datos 5 29-03-2004 02:54:49


La franja horaria es GMT +2. Ahora son las 03:56:10.


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