Как ограничить функцию SQL Server от округления Деньги возвращаемое значение - PullRequest
0 голосов
/ 18 октября 2019

Я сделал функцию для получения коэффициента конверсии с возвратом денег, но почему сервер sql выполняет округление при выводе данных.

Я сделал скалярную функцию на SQL Server с возвратом денег на вывод

CREATE FUNCTION CurrencyRate(
-- Add the parameters for the function here
@FromCurr  CHAR(3), 
@ToCurr    CHAR(3), 
@Date_Tran DATE)
RETURNS MONEY
AS
     BEGIN
         -- Declare the return variable here
         DECLARE @CurrencyRate MONEY;

         -- the T-SQL statements to compute the return value here
         SELECT @CurrencyRate = CAST(tc.scale AS MONEY)
         FROM dbo.TCurrencyConverter tc
         WHERE @Date_Tran BETWEEN tc.start_date AND tc.end_date
               AND tc.currency_id_1 = @FromCurr
               AND tc.currency_id_2 = @ToCurr;

         -- Return the result of the function
         RETURN @CurrencyRate;
     END;
GO

Я ожидаю, что на выходе будет 0.000070550000000, но на самом деле будет 0.0001.

1 Ответ

1 голос
/ 18 октября 2019

Это максимальный размер типа данных денег в sqlserver, равный

92233720368547.9999

, вы можете использовать numeric () в качестве типа возврата.

cast('0.000070550000000' as numeric(18,18))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...