Query Manager, Parametros

sql
Etiquetas: #<Tag:0x00007fb8da193d78>

#1

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

  1. si se pueden ingresar mas de dos parámetros en una consulta que no sean fechas.
  2. si se puede como ingresar el valor libre

#2

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]' 

Saludos


#3

Bro me ayudaste bastante muchas gracias, aun tengo una pregunta si se puede ingresar un valor entero “x” que no este ligado a una tabla?.


#4

esa consulta es en el query manager de SAP BO SQL pero y como la haces en HANA??. gracias.


#5

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.

Saludos.


#6

Es basicamente lo mismo, lo unico es que hay que considerar la sintaxis de HANA:

/* select from [dbo].[OINV] T0 */

Declare DateF timestamp;

DateF := /* T0."DocDate" */ '[%0]';

O Tambien

Declare DateF timestamp;

DateF := (select T0."DocDate" from [dbo].[OINV] T0 where T0."DocDate" = '[%0]');

#7

Este tema se cerró automáticamente 7 días después del último post. No se permiten nuevas respuestas.