Asignar resultado de un Select a una valriable

Buenos dias.
En un SP en Hana, no puedo asignar el resultado de un SELECT (que devuelve valor unico) a un variabe DECIMAL. Si me toma como entero, pero no como decimal. Que estoy haciendo mal?. Algo de la sentencia??

En la declaración tengo esto:

   AS
      Vari DECIMAL(21,6);

Luego para asignarlo

   BEGIN
   	Vari := (SELECT .....);

Al usar la variable en otro select me lo toma como numero entero, es decir yo se que tendria que ser 44,26 y me toma en la variable 44.

Ejemplo del select

SELECT T0."PrdStdCst" , (T0."PrdStdCst" * Vari)
WHERE T10."U_Vigente" = 'S')) AS "A"
FROM OITM 
T0  INNER JOIN ITM1 T1 ON T0."ItemCode" = T1."ItemCode" 
WHERE (T0."SellItem" ='Y' and  T1."PriceList" =1 and  T0."PrcrmntMtd" = 'M' and  T0."ItemCode" >= '2000000000' and  T0."ItemCode" <= '9000000000' AND T1."Price" > 0 AND T0."frozenFor" ='N' AND T0."Phantom" = 'N'  AND T0."PrdStdCst" > 0) 
order by  T0."ItemCode"  asc;

Gracias
Saludos

¿Y si intentas darle la instrucción para que lo convierta a decimal?

Tal vez usando CAST o CONVERT

DECLARE Vari DECIMAL(21,6);
SELECT CAST(tu codigo... AS DECIMAL(21,6)) INTO Vari FROM ...;

En Hana me parece que algo similar es esto:

DECLARE Vari DECIMAL(21,6);
SELECT TO_DECIMAL(tu código...) INTO Vari FROM ...;

Hay ocasiones que se debe usar la sintaxis SELECT… INTO para asignar el resultado de una consulta a una variable

DECLARE Vari DECIMAL(21,6);
SELECT ... INTO Vari FROM ...;

Espero que la sugerencia te sea de ayuda, es con lo que podría participar.

Saludines

Hola Si si perfecto, funciono. Muchas gracias

Me da gusto que te haya servido alguna de las ideas, si gustas marcar como solución y exponer cual de ellas fue, sería de gran ayuda para los posibles y futuros lectores que pasen por aquí.

Con esto concluyo mi participación en la consulta.

Saludines.

Pues @GustavoB marcas la solución de quien te ha ayudado y dejas el resultado final de la consulta completa y así servirá para el futuro. Además así se podrá dar por resuelto el tema y cerrarlo.

La consulta me quedo asi y funciona
ALTER procedure pruebaVariable()

LANGUAGE SQLSCRIPT

SQL SECURITY INVOKER

AS

Vari DECIMAL (21,2);

BEGIN

SELECT CAST (T10.“U_Valor” AS DECIMAL (21,2)) INTO Vari FROM “GTOSINDI” T10 WHERE T10.“U_Vigente” = ‘S’ ;

SELECT distinct T0.“ItemCode”, T0.“ItemName”,T0.“PrdStdCst” , Vari, ROUND ((T0.“PrdStdCst” * Vari),2) As “Rdo”

FROM OITM T0 INNER JOIN ITM1 T1 ON T0.“ItemCode” = T1.“ItemCode”

WHERE ……

Este tema se cerró automáticamente 7 días después de la última publicación. No se permiten nuevas respuestas.