【发布时间】:2016-03-26 00:51:39
【问题描述】:
--Actually this is calculated based on some logic but here
-- I have hard coded it to keep it simple.
DECLARE @Count INT = 4
--To accommodate Precision + Scale correctly
SET @Count = @Count + 10
-- I want something like this
DECLARE @Temp DECIMAL( @Count , 10 )
我想在 SQL Server 中创建一个十进制变量,其 Precession 是从某个变量动态获取的,我已经尝试了上面的 sn-p 但它失败并出现错误
''@Count' 附近的语法不正确。'
是否有任何可能的解决方案来做这样的事情?
编辑:
我想要这样的要求,因为我必须克服下面 sn-p 中面临的问题:
DECLARE @Var1 DECIMAL(32, 10) = 0.0000001700
DECLARE @Var2 DECIMAL(32, 10) = 1.0000000000
Select CAST( (@Var1*@Var2) AS DECIMAL(32,10) ) --This Outputs 0.0000000000
现在上面的 sn-p 输出 0.0000000000 而不是 0.0000001700,因此为了解决这个问题,我想创建一个 新变量,其进动将是 @var2 的小数点前位数 @newVar Decimal(11,10) 然后执行乘法得到正确的输出。
DECLARE @Var2 DECIMAL(32, 10)= 1.0000000000
DECLARE @newVar DECIMAL( 11 , 10 )= @Var2 -- here 11 is dynamically calculated, my original question
DECLARE @Var1 DECIMAL(32, 10)= 0.0000001700
Select CAST((@Var1*@newVar) AS DECIMAL(32,10)) --This correctly outputs 0.0000001700
注意:我知道减少原始变量@var1 and @var2的进动和规模会解决问题,但在我的项目中会导致架构发生较大的变化,因此无法做到。
【问题讨论】:
-
仅通过创建整个脚本来声明和使用动态 SQL 的变量。为什么需要这个?
标签: sql sql-server database sql-server-2008 sql-server-2005