Skip to Content
0

Asignar parametros de un Stored Procedure en Query Manager

Jul 18, 2017 at 12:24 PM

82

avatar image
Former Member

Buena Tardes a Todos

tengo un Stored Procedure que funciona en SqL y quisisera saber como poderlo hacer que el query manager solicite los parametros para SAP para que el usuario final pueda utilizarlo

ALTER PROCEDURE [dbo].[SP_OCUPACION]

 @FECHAI Date, @FECHAF Date, @UNI   Varchar (2), @DIA   INT 

AS BEGIN 

DECLARE @rentados DECIMAL(8,0), @totales DECIMAL (8,0)

SELECT  @rentados=SUM(FLOOR((case T1.[U_DURACION] when  'DIARIA' THEN T1.U_cantidad  when  'SEMANAL' THEN T1.U_cantidad*7  when  'MENSUAL' THEN T1.U_cantidad*30 ELSE 0 END)))

FROM OINV T0  INNER JOIN INV1 T1 ON T0.DocEntry = T1.DocEntry 
INNER JOIN OITM T2 ON T1.ItemCode = T2.ItemCode 
where (T2.[QryGroup2] <>'Y' and T0.[invntsttus]<>'C') AND
(T0.[Docdate]>=@FECHAI  and T0.[Docdate] <= @FECHAF) AND
 (T1.[ItemCode] like @UNI+'-%%')and (T1.[PriceAfVAT]<>0)

SELECT  @totales =  (SUM(FLOOR((T0.[TreeQty])))* @DIA)
FROM [dbo].[OITM] T0 WHERE  T0.[validFor] = 'Y' AND  
T0.[ItemCode] Like @UNI+'-%%' AND 

SELECT FLOOR((@rentados * 100.00 / @totales))  AS OCUPACION;

 END

y pues leyendo en el foro encontre este codigo pero hay un parametro que no puedo o no se como asignar en el query manager

declare @d1 date, @d2 date, @d3 varchar(2), @d4 Int

set @d1=(/*select top 1 T0.DocDate from [dbo].[OINV] T0
 where T0.DocDate=*/'[%0]')

set @d2=(/*select top 1 T0.DocDate from [dbo].[OINV] T0 
where T0.DocDate=*/'[%1]')

set @d3=(/*select top 1 T1.ItemCode from  [dbo].[OITM] T1 
where T1.ItemCode=*/'[%2]')

set @d4 = ?

exec [dbo].[SP_OCUPACION] @d1,@d2,@d3,@d4

@d4 es un numero que el usuario debe asignar y no se encuentra almacenado en ninugna tabla por lo que las clausalas anteriores no funcionan con @d4 como puedo hacer para setear esete parametro

Gracais de antemano

10 |10000 characters needed characters left characters exceeded
* Please Login or Register to Answer, Follow or Comment.

1 Answer

Best Answer
Gerardo Mendez Jul 18, 2017 at 03:19 PM
1

Hola amigo, hice algunas pruebas y me funciona de la siguiente forma:

declare @d1 date, @d2 date, @d3 varchar(2), @d4 int


set @d1=(/*select top 1 T0.DocDate from [dbo].[OINV] T0
 where T0.DocDate=*/'[%0]')


set @d2=(/*select top 1 T0.DocDate from [dbo].[OINV] T0 
where T0.DocDate=*/'[%1]')


set @d3=(/*select top 1 T1.ItemCode from  [dbo].[OITM] T1 
where T1.ItemCode=*/'[%2]')


set @d4=(/*select top 1 T1.Number as número from  [dbo].[OITM] T1 
where T1.Number=*/'[%3]')


Select @d1,@d2,@d3 ,@d4
Share
10 |10000 characters needed characters left characters exceeded