Ver Mensaje Individual
  #11 (permalink)  
Antiguo 04/05/2009, 08:00
huguru
 
Fecha de Ingreso: mayo-2009
Mensajes: 2
Antigüedad: 16 años
Puntos: 0
Respuesta: Procedimientos almacenados y paginacion.

Antes que nada me presento, soy nuevo en los foros y en usar procedimientos almacenados ahora tengo una pregunta, ¿alguien me puede explicar que hace este procedimiento ? es de consulta.


CREATE PROCEDURE getFaltantes
@Alias int,
@num_pedido int,
@condicion int -- 0 Faltantes, 1 Sobrantes, 2 todos
AS
SET NOCOUNT ON;
DECLARE @SQL VARCHAR(5000);

SET @SQL = "SELECT NumAlias, nombreSuc, clave_linea, nombre_linea, Depto,"
SET @SQL = @SQL + " clave_artic,"
SET @SQL = @SQL + " nombre_artic,"
SET @SQL = @SQL + " tipoColor,"
SET @SQL = @SQL + " clasif,"
SET @SQL = @SQL + " fch_comp,"
SET @SQL = @SQL + " SUM(cant_pedida) cant_pedida,"
SET @SQL = @SQL + " SUM(cant_surtida) cant_surtida,"
SET @SQL = @SQL + " SUM(dif) dif"
SET @SQL = @SQL + " FROM ("
SET @SQL = @SQL + " SELECT"
SET @SQL = @SQL + " sw_cat_suc.NumAlias, sw_cat_suc.nombre nombreSuc, cs_cat_linea.clave clave_linea, cs_cat_linea.nombre nombre_linea, cs_cat_dpto.nom_corto Depto, "
SET @SQL = @SQL + " cs_cat_artic.clave clave_artic,"
SET @SQL = @SQL + " cs_cat_artic.nombre nombre_artic, "
SET @SQL = @SQL + " cs_cat_artic.nombre2 tipoColor,"
SET @SQL = @SQL + " cs_cat_artic.clasif, "
SET @SQL = @SQL + " cs_part_comp.cant as 'cant_pedida',"
SET @SQL = @SQL + " cs_doc_comp.fecha as 'fch_comp',"
SET @SQL = @SQL + " 0 as 'cant_surtida',"
SET @SQL = @SQL + " cs_part_comp.cant * -1 as 'dif'"
SET @SQL = @SQL + " FROM cs_doc_comp, cs_part_comp, cs_cat_artic, cs_cat_dpto, cs_cat_linea, sw_cat_suc"
SET @SQL = @SQL + " WHERE cs_doc_comp.doc_comp_id = cs_part_comp.doc_comp_id "
SET @SQL = @SQL + " and cs_doc_comp.cons_suc_id = cs_part_comp.cons_suc_id "
SET @SQL = @SQL + " and cs_part_comp.artic_id = cs_cat_artic.artic_id "
SET @SQL = @SQL + " and cs_part_comp.cons_suc_id = cs_cat_artic.cons_suc_id "
SET @SQL = @SQL + " and cs_cat_artic.depto_id = cs_cat_dpto.dpto_id "
SET @SQL = @SQL + " and cs_cat_artic.cons_suc_id = cs_cat_dpto.cons_suc_id "
SET @SQL = @SQL + " and cs_cat_artic.linea_id = cs_cat_linea.linea_id "
SET @SQL = @SQL + " and cs_cat_artic.cons_suc_id = cs_cat_linea.cons_suc_id "
SET @SQL = @SQL + " and cs_doc_comp.cons_suc_id = sw_cat_suc.suc_id "
SET @SQL = @SQL + " and cs_doc_comp.tipo_doc = 10 "
SET @SQL = @SQL + " and cs_doc_comp.status = 0 "
SET @SQL = @SQL + " and cs_doc_comp.num_doc = " + CAST(@num_pedido as Varchar)
SET @SQL = @SQL + " and sw_cat_suc.NumAlias = " + CAST(@Alias as Varchar)

SET @SQL = @SQL + " Union All"

SET @SQL = @SQL + " SELECT "
SET @SQL = @SQL + " sw_cat_suc_a.NumAlias, sw_cat_suc_a.nombre nombreSuc, cs_cat_linea.clave as clave_linea, cs_cat_linea.nombre as nombre_linea, cs_cat_dpto.nom_corto as Depto,"
SET @SQL = @SQL + " cs_cat_artic.clave as clave_artic,"
SET @SQL = @SQL + " cs_cat_artic.nombre as nombre_artic,"
SET @SQL = @SQL + " cs_cat_artic.nombre2 as tipoColor,"
SET @SQL = @SQL + " cs_cat_artic.clasif,"
SET @SQL = @SQL + " 0 as 'cant_pedida',"
SET @SQL = @SQL + " cs_doc_comp.fecha as 'fch_comp',"
SET @SQL = @SQL + " cs_part_trans.cantidad as 'cant_surtida',"
SET @SQL = @SQL + " cs_part_trans.cantidad * 1 as 'dif'"
SET @SQL = @SQL + " FROM cs_doc_trans, cs_part_trans, cs_cat_artic, cs_cat_dpto, cs_cat_linea, sw_cat_suc sw_cat_suc_a, sw_cat_suc sw_cat_suc_b, cs_doc_comp"
SET @SQL = @SQL + " WHERE cs_doc_trans.doc_trans_id = cs_part_trans.doc_trans_id "
SET @SQL = @SQL + " and cs_doc_trans.cons_suc_id = cs_part_trans.cons_suc_id "
SET @SQL = @SQL + " and cs_part_trans.artic_id = cs_cat_artic.artic_id "
SET @SQL = @SQL + " and cs_part_trans.cons_suc_id = cs_cat_artic.cons_suc_id "
SET @SQL = @SQL + " and cs_cat_artic.depto_id = cs_cat_dpto.dpto_id "
SET @SQL = @SQL + " and cs_cat_artic.cons_suc_id = cs_cat_dpto.cons_suc_id "
SET @SQL = @SQL + " and cs_cat_artic.linea_id = cs_cat_linea.linea_id "
SET @SQL = @SQL + " and cs_cat_artic.cons_suc_id = cs_cat_linea.cons_suc_id "
SET @SQL = @SQL + " and cs_doc_trans.suc_id_r = sw_cat_suc_a.suc_id"
SET @SQL = @SQL + " and cs_doc_trans.suc_id_e = sw_cat_suc_b.suc_id "
SET @SQL = @SQL + " and cs_doc_comp.num_doc = cs_doc_trans.num_ref"
SET @SQL = @SQL + " and cs_doc_comp.cons_suc_id = cs_doc_trans.suc_id_r"
SET @SQL = @SQL + " and cs_doc_trans.tipo_doc = 6 "
SET @SQL = @SQL + " and cs_doc_trans.status = 0 "
SET @SQL = @SQL + " and sw_cat_suc_a.NumAlias = " + CAST(@Alias as Varchar)
SET @SQL = @SQL + " and cs_doc_trans.num_ref = " + CAST(@num_pedido as Varchar)
SET @SQL = @SQL + " ) A"
SET @SQL = @SQL + " GROUP BY NumAlias, nombreSuc, clave_linea, nombre_linea, Depto, nombre_artic, tipoColor, clave_artic, clasif, fch_comp"
IF @condicion = 0 BEGIN
SET @SQL = @SQL + " HAVING SUM(dif) < 0"
END
ELSE IF @condicion = 1 BEGIN
SET @SQL = @SQL + " HAVING SUM(dif) > 0"
END
EXEC(@SQL)



GO


Por su atencion gracia.