Hola buenas, estoy tradando de hacer una consulta que tenga 3 parametros introducidos por usuarios
(Codigo de articulo,codigo de almacen y cantidad), en el cual quiero que la cantidad el usuario pueda ingresarla libre a lo que me refiero es que no este ligada a ninguna tabla de SAP
la tabla a la cual quiero hacer el select es una tabla definida por usuario aqui esta mi codigo:
set @d1=(/*select top 1 T0.Code from [dbo].[OITT] T0
where T0.Code=*/'[%0]')
set @d2=(/*select top 1 T1.WhsCode from [dbo].[OWHS] T1
where T1.WhsCode=*/'[%1]')
set @d3= ?
select T0.ItemCode,T0.ItemName,T0.Warehouse,T0.Quantity from SBOTemp.dbo.Retazos as T0
join SEL.dbo.OITT as T1 on T0.ItemCode = t1.Code COLLATE Modern_Spanish_CI_AS
where T0.ItemCode = @d1 and T0.Warehouse like @d2
and T0.Quantity = @d3 order by T0.Warehouse
en fin tengo dos grandes dudas
si se pueden ingresar mas de dos parámetros en una consulta que no sean fechas.
Si se puede, en la consulta de los parametros deberas hacer un join entre las tablas a obtener el dato:
declare @numero char(20)
declare @item char(20)
declare @cantidad as numeric
/*SELECT T0.[DocNum], T1.[ItemCode]
FROM ORDR T0 INNER JOIN RDR1 T1 ON T0.DocEntry = T1.DocEntry
WHERE T0.[DocNum] ='[%1]' and T1.[ItemCode] ='[%0]' and T1.Quantity = '[%3]'*/
set @numero='[%1]'
set @item='[%0]'
set @cantidad = '[%3]'
select @numero,@item,@cantidad
En tu caso, para aplicar el @d3 ppuede ser algo asi:
/*SELECT T1.[ItemCode]
FROM OITT T0 INNER JOIN RDR1 T1 ON T0.Code = T1.ItemCode
WHERE T1.[ItemCode] ='[%0]' and T1.Quantity = '[%2]'* and T1.WhsCode='[%1]'*/
set @d1 ='[%0]'
set @d2 ='[%1]'
set @d3 ='[%2]'
Segun tengo entendido, TODAS las variables deben ir asociadas a una tabla, bien sea nativa de SAP o un campo de un UDT/UDO.
Si quieres colocar un campo numerico con una descripcion propia, deberas hacer un UDF a cualquier tabla, o bien crear una UDT con los campos de los tipos y nombres que quieras para luego usarlos como variables
declare @MiVariable1 as int
set @MiVariable1 = /*SELECT T0.U_MiCampoINT FROM [dbo].[@MiUDT] T0 WHERE T0.U_MiCampoINT */ '[%0]'
o Tambien
declare @MiVariable1 as int
set @MiVariable1 = (SELECT T0.U_MiCampoINT FROM [dbo].[@MiUDT] T0 WHERE T0.U_MiCampoINT = '[%2]')
Estoy pendiente por hacer un tutorial sobre como definir Parametros en el Query Manager, porque hay variadas formas con sus respectivas consideraciones.