Hola!

Registrándote como bakuno podrás publicar, compartir y comunicarte en privado con otros bakuos :D

Regístrame ya!

AYUDA CON ESTE PRCEDIMIENTO ALMACENADO SQL SERVER 2008

crommie

Becerro
Desde
16 Dic 2008
Mensajes
28
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
 
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
 
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
 
Volver
Arriba