AYUDA CON ESTE PRCEDIMIENTO ALMACENADO SQL SERVER 2008

#1
OCURRE LO SIGUIENTE...EL RESULTADO DE ESTE PROC DE DEVUELVE VARIOS VALORES, Y NO SE POR QUE SIEMPRE ME ESTA REGRESANDO SIEMPRE EL PRIMERO NADA MAS..LA VERDAD AGRADECERIA MUCHO SU AYUDA BAKUNOS




ALTER PROCEDURE [dbo].[EXISTENCIAXPRESVIRTUAL] (
@P_CODIGO VARCHAR(20),
---salidas
@CODIGO VARCHAR(20) OUTPUT,
@DESCRIPCION VARCHAR(81) OUTPUT,
@ID_GRUPO CHAR(7) OUTPUT,
@FECHAALTA DATETIME OUTPUT,
@ID_TIPO INTEGER OUTPUT,
@ID_DEPARTAMENTO INTEGER OUTPUT,
@UBICACION VARCHAR(30) OUTPUT,
@CAMBIODEPRECIO DATETIME OUTPUT,
@PEDIMENTOS SMALLINT OUTPUT,
@ALMACENCOMPRA INTEGER OUTPUT,
@UBICACION_ALMACEN_COMPRA VARCHAR(30) OUTPUT,
@CALCULODEPRECIOS SMALLINT OUTPUT,
@PERMITIR_COMPRADIRECTA SMALLINT OUTPUT,
@PORC_UTILIDAD_DESEADA NUMERIC(5,2) OUTPUT,
@CODIGODEBARRAS VARCHAR(20) OUTPUT,
@DESCRIPCION_CORTA VARCHAR(30) OUTPUT,
@ID_PRESENTACION INTEGER OUTPUT,
@ID_CARACTERISTICA INTEGER OUTPUT,
@CANTIDAD_OMISION NUMERIC(18,4) OUTPUT,
@CLAVEALTERNATIVA VARCHAR(20) OUTPUT,
@EQUIVALENCIA FLOAT OUTPUT,
@EXISTENCIA FLOAT OUTPUT,
@UNIDAD VARCHAR(3) OUTPUT,
@FORMULA1 VARCHAR(60) OUTPUT,
@FORMULA2 VARCHAR(60) OUTPUT,
@FORMULA3 VARCHAR(60) OUTPUT,
@FORMULA4 VARCHAR(60) OUTPUT,
@FORMULA5 VARCHAR(60) OUTPUT,
@FORMULA6 VARCHAR(60) OUTPUT,
@FORMULA7 VARCHAR(60) OUTPUT,
@FORMULA8 VARCHAR(60) OUTPUT,
@FORMULA9 VARCHAR(60) OUTPUT,
@FORMULA10 VARCHAR(60) OUTPUT,
@PRECIO1 NUMERIC(18,2) OUTPUT,
@PRECIO2 NUMERIC(18,2) OUTPUT,
@PRECIO3 NUMERIC(18,2) OUTPUT,
@PRECIO4 NUMERIC(18,2) OUTPUT,
@PRECIO5 NUMERIC(18,2) OUTPUT,
@PRECIO6 NUMERIC(18,2) OUTPUT,
@PRECIO7 NUMERIC(18,2) OUTPUT,
@PRECIO8 NUMERIC(18,2) OUTPUT,
@PRECIO9 NUMERIC(18,2) OUTPUT,
@PRECIO10 NUMERIC(18,2) OUTPUT,
@IMPTOS1 NUMERIC(18,4) OUTPUT,
@IMPTOS2 NUMERIC(18,4) OUTPUT,
@IMTPOS3 NUMERIC(18,4) OUTPUT,
@IMPTOS4 NUMERIC(18,4) OUTPUT,
@IMPTOS5 NUMERIC(18,4) OUTPUT,
@IMPTOS6 NUMERIC(18,4) OUTPUT,
@IMPTOS7 NUMERIC(18,4) OUTPUT,
@IMPTOS8 NUMERIC(18,4) OUTPUT,
@IMPTOS9 NUMERIC(18,4) OUTPUT,
@IMPTOS10 NUMERIC(18,4) OUTPUT,
@NETO1 NUMERIC(18,2) OUTPUT,
@NETO2 NUMERIC(18,2) OUTPUT,
@NETO3 NUMERIC(18,2) OUTPUT,
@NETO4 NUMERIC(18,2) OUTPUT,
@NETO5 NUMERIC(18,2) OUTPUT,
@NETO6 NUMERIC(18,2) OUTPUT,
@NETO7 NUMERIC(18,2) OUTPUT,
@NETO8 NUMERIC(18,2) OUTPUT,
@NETO9 NUMERIC(18,2) OUTPUT,
@NETO10 NUMERIC(18,2) OUTPUT,
@COSTOREPOSICION FLOAT OUTPUT,
@MINIMO FLOAT OUTPUT,
@MAXIMO FLOAT OUTPUT,
@PUNTO_REORDEN FLOAT OUTPUT,
@COSTOPROMEDIO FLOAT OUTPUT,
@COSTOACTUAL FLOAT OUTPUT,
@COSTOANTERIOR FLOAT OUTPUT,
@PUNTOS1 FLOAT OUTPUT,
@PUNTOS2 FLOAT OUTPUT,
@STATUS SMALLINT OUTPUT,
@FECHAALTAPRES DATETIME OUTPUT,
@PORCENTAJE_MERMA NUMERIC(5,2) OUTPUT,
@PORCENTAJE_TOLERANCIA NUMERIC(5,2) OUTPUT,
@DETENERSE_EN_CANTIDAD SMALLINT OUTPUT,
@VENTAXPIEZA SMALLINT OUTPUT,
@VTAS_VOL1 INTEGER OUTPUT,
@VTAS_VOL2 INTEGER OUTPUT,
@VTAS_VOL3 INTEGER OUTPUT,
@VTAS_VOL4 INTEGER OUTPUT,
@VTAS_VOL5 INTEGER OUTPUT,
@FECHA_PRECIO DATETIME OUTPUT,
@FECHA_COSTOREP DATETIME OUTPUT,
@MULTIPLO_MIN_COMPRA NUMERIC(15,4) OUTPUT,
@CALIDAD VARCHAR(30) OUTPUT,
@CADUCIDAD NUMERIC(15,4) OUTPUT,
@PRECIO_SUGERIDO NUMERIC(15,2) OUTPUT,
@PRESENTACION_SUPERIOR INTEGER OUTPUT,
@PRESENTACION_UNICA INTEGER OUTPUT,
@EXISTENCIAXPRESENTACION FLOAT OUTPUT,
@COSTOREPOSICIONPRESENTACION FLOAT OUTPUT,
@COSTOPROMEDIOPRESENTACION FLOAT OUTPUT,
@COSTOACTUALPRESENTACION FLOAT OUTPUT,
@COSTOANTERIORPRESENTACION FLOAT OUTPUT)
AS
declare @LPRESENTACIONVIRTUAL INTEGER;
declare @LEXISTENCIABASE FLOAT;
declare @LCONTEO INTEGER;
declare @CONTADORAUX INTEGER;
declare @LCOSTOREPOSICION FLOAT;
declare @LCOSTOREPOSICIONBASE FLOAT;
declare @LCOSTOPROMEDIO FLOAT;
declare @LCOSTOPROMEDIOBASE FLOAT;
declare @LCOSTOACTUAL FLOAT;
declare @LCOSTOACTUALBASE FLOAT;
declare @LCOSTOANTERIORBASE FLOAT;
declare @LCOSTOANTERIOR FLOAT;
BEGIN
/*CHECA LA EXISTENCIA DEL PARAMETRO
PRESENTACION VIRTUAL */

EXEC obtener_parametro'PRESENT_VIRTUAL',1,@LPRESENTACIONVIRTUAL output

if (@LPRESENTACIONVIRTUAL IS null)
SET @LPRESENTACIONVIRTUAL=1;
-- PRINT 'el valor es nulo'
SET @LEXISTENCIABASE =0;

SET @CONTADORAUX =0;
/* NUMERO DE REGISTROS FILTRADOS */

begin
declare @sql varchar(1000)
SELECT @LCONTEO = COUNT(*) FROM V_PRODUCTOS_COMP
WHERE
V_PRODUCTOS_COMP.codigo = @P_CODIGO

end



begin

SELECT
@CODIGO = V_PRODUCTOS_COMP.CODIGO ,
@DESCRIPCION = V_PRODUCTOS_COMP.DESCRIPCION ,
@ID_GRUPO = V_PRODUCTOS_COMP.ID_GRUPO,
@FECHAALTA = V_PRODUCTOS_COMP.FECHAALTA,
@ID_TIPO = V_PRODUCTOS_COMP.ID_TIPO,
@ID_DEPARTAMENTO = V_PRODUCTOS_COMP.ID_DEPARTAMENTO,
@UBICACION = V_PRODUCTOS_COMP.UBICACION,
@CAMBIODEPRECIO = V_PRODUCTOS_COMP.cambiodeprecio,
@PEDIMENTOS = v_productos_comp.pedimentos,
@ALMACENCOMPRA = v_productos_comp.almacencompra,
@UBICACION_ALMACEN_COMPRA = v_productos_comp.ubicacion_almacen_compra,
@CALCULODEPRECIOS=v_productos_comp.calculodeprecios,
@PERMITIR_COMPRADIRECTA=v_productos_comp.permitir_compradirecta,
@PORC_UTILIDAD_DESEADA=v_productos_comp.porc_utilidad_deseada,
@CODIGODEBARRAS=V_PRODUCTOS_COMP.CODIGODEBARRAS,
@DESCRIPCION_CORTA=V_PRODUCTOS_COMP.DESCRIPCION_CORTA,
@ID_PRESENTACION=V_PRODUCTOS_COMP.ID_PRESENTACION,
@ID_CARACTERISTICA =V_PRODUCTOS_COMP.ID_CARACTERISTICA,
@CANTIDAD_OMISION =V_PRODUCTOS_COMP.CANTIDAD_OMISION,
@CLAVEALTERNATIVA =V_PRODUCTOS_COMP.CLAVEALTERNATIVA,
@EQUIVALENCIA =V_PRODUCTOS_COMP.EQUIVALENCIA,
@EXISTENCIA =V_PRODUCTOS_COMP.EXISTENCIA,
@UNIDAD =V_PRODUCTOS_COMP.UNIDAD,
@FORMULA1 =V_PRODUCTOS_COMP.FORMULA1,
@FORMULA2 =V_PRODUCTOS_COMP.FORMULA2,
@FORMULA3 =V_PRODUCTOS_COMP.FORMULA3,
@FORMULA4 =V_PRODUCTOS_COMP.FORMULA4,
@FORMULA5=V_PRODUCTOS_COMP.FORMULA5,
@FORMULA6 =V_PRODUCTOS_COMP.FORMULA6,
@FORMULA7=V_PRODUCTOS_COMP.FORMULA7,
@FORMULA8 =V_PRODUCTOS_COMP.FORMULA8,
@FORMULA9 =V_PRODUCTOS_COMP.FORMULA9,
@FORMULA10 =V_PRODUCTOS_COMP.FORMULA10,
@PRECIO1 =V_PRODUCTOS_COMP.PRECIO1,
@PRECIO2 =V_PRODUCTOS_COMP.PRECIO2,
@PRECIO3 =V_PRODUCTOS_COMP.PRECIO3,
@PRECIO4 =V_PRODUCTOS_COMP.PRECIO4,
@PRECIO5 =V_PRODUCTOS_COMP.PRECIO5,
@PRECIO6 =V_PRODUCTOS_COMP.PRECIO6,
@PRECIO7 =V_PRODUCTOS_COMP.PRECIO7,
@PRECIO8 =V_PRODUCTOS_COMP.PRECIO8,
@PRECIO9 =V_PRODUCTOS_COMP.PRECIO9,
@PRECIO10 =V_PRODUCTOS_COMP.PRECIO10,
@IMPTOS1 =V_PRODUCTOS_COMP.IMPTOS1,
@IMPTOS1 =V_PRODUCTOS_COMP.IMPTOS2,
@IMPTOS1 =V_PRODUCTOS_COMP.IMTPOS3,
@IMPTOS1 =V_PRODUCTOS_COMP.IMPTOS4,
@IMPTOS1 =V_PRODUCTOS_COMP.IMPTOS5,
@IMPTOS1 =V_PRODUCTOS_COMP.IMPTOS6,
@IMPTOS1 =V_PRODUCTOS_COMP.IMPTOS7,
@IMPTOS1 =V_PRODUCTOS_COMP.IMPTOS8,
@IMPTOS1 =V_PRODUCTOS_COMP.IMPTOS9,
@IMPTOS1 =V_PRODUCTOS_COMP.IMPTOS10,
@NETO1 =V_PRODUCTOS_COMP.NETO1,
@NETO1 =V_PRODUCTOS_COMP.NETO2,
@NETO1 =V_PRODUCTOS_COMP.NETO3,
@NETO1 =V_PRODUCTOS_COMP.NETO4,
@NETO1 =V_PRODUCTOS_COMP.NETO5,
@NETO1 =V_PRODUCTOS_COMP.NETO6,
@NETO1 =V_PRODUCTOS_COMP.NETO7,
@NETO1 =V_PRODUCTOS_COMP.NETO8,
@NETO1 =V_PRODUCTOS_COMP.NETO9,
@NETO1 =V_PRODUCTOS_COMP.NETO10,
@COSTOREPOSICION =V_PRODUCTOS_COMP.COSTOREPOSICION,
@MINIMO =v_productos_comp.minimo,
@MAXIMO =v_productos_comp.maximo,
@PUNTO_REORDEN =v_productos_comp.punto_reorden,
@COSTOPROMEDIO =v_productos_comp.costopromedio,
@COSTOACTUAL =v_productos_comp.costoactual,
@COSTOANTERIOR =v_productos_comp.costoanterior,
@PUNTOS1 =v_productos_comp.puntos1,
@PUNTOS2 =v_productos_comp.puntos2,
@STATUS =v_productos_comp.status,
@FECHAALTAPRES =v_productos_comp.fechaaltapres,
@PORCENTAJE_MERMA =v_productos_comp.porcentaje_merma,
@PORCENTAJE_TOLERANCIA =v_productos_comp.porcentaje_tolerancia,
@DETENERSE_EN_CANTIDAD =v_productos_comp.detenerse_en_cantidad,
@VENTAXPIEZA =v_productos_comp.ventaxpieza,
@VTAS_VOL1 =v_productos_comp.vtas_vol1,
@VTAS_VOL2 =v_productos_comp.vtas_vol2,
@VTAS_VOL3 =v_productos_comp.vtas_vol3,
@VTAS_VOL4 =v_productos_comp.vtas_vol4,
@VTAS_VOL5 =v_productos_comp.vtas_vol5,
@FECHA_PRECIO =v_productos_comp.fecha_precio,
@FECHA_COSTOREP =v_productos_comp.fecha_costorep,
@MULTIPLO_MIN_COMPRA =v_productos_comp.multiplo_min_compra,
@CALIDAD =v_productos_comp.calidad,
@CADUCIDAD =v_productos_comp.caducidad,
@PRECIO_SUGERIDO =v_productos_comp.precio_sugerido
FROM
V_PRODUCTOS_COMP
WHERE
V_PRODUCTOS_COMP.codigo =@P_CODIGO
ORDER BY CODIGO, ID_PRESENTACION

---------------------------------------------------------------------------------------





BEGIN
set @CONTADORAUX =@CONTADORAUX +1;

/* PRESENTACION SUPERIOR */
if (@CONTADORAUX =@LCONTEO )
BEGIN
set @PRESENTACION_SUPERIOR =1;
END
else
BEGIN
SET @PRESENTACION_SUPERIOR=0;
END
/* FIN DE PRESENTACION SUPERIOR */

/* PRESENTACION UNICA */
if (@LCONTEO =1)
BEGIN
set @PRESENTACION_UNICA =1;
END
ELSE
BEGIN
set @PRESENTACION_UNICA =0;
END
/* FIN DE PRESENTACION UNICA */

if (@ID_PRESENTACION=0)
BEGIN
SET @LEXISTENCIABASE=@EXISTENCIA ;
SET @LCOSTOREPOSICIONBASE=@COSTOREPOSICION ;
SET @LCOSTOACTUALBASE=@COSTOACTUAL ;
SET @LCOSTOPROMEDIOBASE=@COSTOPROMEDIO ;
SET @LCOSTOANTERIORBASE=@COSTOANTERIOR ;
SET @EXISTENCIAXPRESENTACION=(@EXISTENCIA /@EQUIVALENCIA );
-- EXISTENCIAXPRESENTACION=ROUND((EXISTENCIA/EQUIVALENCIA),1);

SET @LCOSTOREPOSICION=@COSTOREPOSICION ;
SET @LCOSTOACTUAL=@COSTOACTUAL ;
SET @LCOSTOANTERIOR=@COSTOANTERIOR ;
SET @COSTOREPOSICIONPRESENTACION=@LCOSTOREPOSICION ;
SET @COSTOPROMEDIOPRESENTACION=@LCOSTOPROMEDIOBASE ;
SET @COSTOACTUALPRESENTACION=@LCOSTOACTUAL ;
SET @COSTOANTERIORPRESENTACION=@LCOSTOANTERIOR ;
END
ELSE
BEGIN
SET @EXISTENCIAXPRESENTACION=(@LEXISTENCIABASE /@EQUIVALENCIA );
SET @COSTOREPOSICIONPRESENTACION=(@LCOSTOREPOSICIONBASE *@EQUIVALENCIA );
SET @COSTOPROMEDIOPRESENTACION=(@LCOSTOPROMEDIOBASE *@EQUIVALENCIA );
SET @COSTOACTUALPRESENTACION=(@LCOSTOACTUALBASE *@EQUIVALENCIA );
SET @COSTOANTERIORPRESENTACION=(@LCOSTOANTERIORBASE *@EQUIVALENCIA );
END




end
END
END
 
#2
EL if (@ID_PRESENTACION=0)
Estas asigando los valores a las variables pero nunca estas devolviendo el resultado de estas:
select @LEXISTENCIABASE, @LCOSTOREPOSICIONBASE, @LCOSTOACTUALBASE
............. asi muestras los valores de las variables que quieras devolver
 

jupag83

Bovino adolescente
#3
lo que tendrias que hacer es regresar el set de resultados, pero en una tabla por que con parametros o te truena si trae mas de un valor o solo te va a traer el primero, es decir,:

SELECT
V_PRODUCTOS_COMP.CODIGO ,
V_PRODUCTOS_COMP.DESCRIPCION ,
V_PRODUCTOS_COMP.ID_GRUPO,
V_PRODUCTOS_COMP.FECHAALTA,
V_PRODUCTOS_COMP.ID_TIPO,
.
.
.
.
.
.
.
.
v_productos_comp.precio_sugerido
FROM
V_PRODUCTOS_COMP
WHERE
V_PRODUCTOS_COMP.codigo =@P_CODIGO
ORDER BY CODIGO, ID_PRESENTACION


cuando usas parametros de salida son para valores unicos
 
Arriba