首页 > 解决方案 > 使用动态变量舍入十进制值

问题描述

我需要根据 SQL 函数中表 B 中的另一列对表 A 中的一列的值进行舍入。

DECLARE @currencyround INT

SELECT @currencyround = ISNULL(currencyround, 2) 
FROM dbo.PRTL_currencySettings

当我@currencyround像下面这样直接在查询中输入值时,它工作正常:

SELECT
    CAST(POS.BALANCE AS DECIMAL(18, 2)) AS DBAmount
FROM 
    dbo.POS_SALES POS

当我@currencyround输入如下值时,它显示错误:

'@currencyround' 附近的语法不正确。

SELECT
    CAST(POS.BALANCE AS DECIMAL(18, @currencyround)) AS DBAmount
FROM 
    dbo.POS_SALES POS  

标签: sqlsql-serversql-function

解决方案


你有什么不明白?类型定义不允许变量。您可以使用动态 SQL 来做到这一点,但这似乎有点矫枉过正。

如果您关心变量的输出方式,请使用str()format()创建您想要的格式。


推荐阅读