Sql 如何声明用于存储数字(变量)的十进制数值的全局变量?

Sql 如何声明用于存储数字(变量)的十进制数值的全局变量?,sql,sql-server-2008,Sql,Sql Server 2008,我需要一个全局变量来存储数字变量的十进制值的数量。。。。下面是一个场景 我有一个存储过程,我在开始时声明所有十进制数,如下所示 Declare @timeID as Decimal(15,**3**), Declare @BusinessID as Decimal(15,**3**) 我需要一个存储十进制计数的变量 Declare @decimalcount as Integer, @decimalcount=3 我可以用它来做我喜欢的所有声明 Declare @timeID as Deci

我需要一个全局变量来存储数字变量的十进制值的数量。。。。下面是一个场景

我有一个存储过程,我在开始时声明所有十进制数,如下所示

Declare @timeID as Decimal(15,**3**),
Declare @BusinessID as Decimal(15,**3**)
我需要一个存储十进制计数的变量

Declare @decimalcount as Integer, @decimalcount=3
我可以用它来做我喜欢的所有声明

Declare @timeID as Decimal(15,@decimalcount)

Declare @BusinessID as Decimal(15,@decimalcount)
因此,在一个地方更改值将更改代码中的所有值。。。。
这可能吗?

查看通过CREATE TYPE命令实现的用户定义的数据类型。我没有使用它们,所以不能给出详细的建议,但一般来说,它允许您在现有数据类型的基础上设置一个新的数据类型,然后在后续代码中可以使用该新数据类型。承租人

CREATE TYPE phkTest from decimal(15,3)
GO


DECLARE @Foo phkTest

SET @Foo = 1
PRINT @Foo

SET @Foo = 1.1
PRINT @Foo

SET @Foo = 1.12
PRINT @Foo

SET @Foo = 1.123
PRINT @Foo

SET @Foo = 1.1234
PRINT @Foo

SET @Foo = 1.12345
PRINT @Foo

SET @Foo = 1.6789
PRINT @Foo

SET @Foo = 1.1235
PRINT @Foo
GO

DROP TYPE phkTest

是的,和广告上的差不多。你们不能得到一个精确的变量,但你们可以得到一致性。我敢打赌,通过一些努力,可以从系统表中找出精度。

我认为您需要动态SQL来实现这一点。您指的是数字的规模吗?i、 e.允许的小数点是dana。。小数位..谢谢,看起来还可以..但是当我在存储过程中使用这个概念时,它会抛出错误..我认为必须将用户定义的数据类型视为一个表:创建它,然后在存储过程中使用/引用它。我不知道如何实现这一点。。我尝试了下面的代码,但不知道如何在过程中执行。创建类型phkTest作为TABLE@convfactor Decimal 15,3这是一个复杂的主题。查看SQL 2008 BOL以了解技术详细信息[],这里有一篇来自SQL Server Central的简短文章,讨论它们的使用[]。