2

我有一个关于在 TSQL 中声明一些变量的非常基本的问题。

当我像这样在 TSQL 中声明一个数字变量时,一切都很好:

DECLARE @Value AS NUMERIC(18,2) = 1.23  

但是如果我想用参数设置小数呢?

DECLARE @NrOfDecimals AS INTEGER = 2
DECLARE @Value AS NUMERIC(18,@NrOfDecimals) = 1.23  
--This second line throws a compile error "Expecting  INTEGER"

所以第二行会抛出一个编译错误“Expecting INTEGER”。

但是@NrOfDecimals 不是整数吗?那么为什么编译器会抱怨呢?

我错过了什么吗?

4

1 回答 1

2

您可以动态创建查询并执行它们。

这将适用于您的问题:

DECLARE @NrOfDecimals AS INTEGER = 2
DECLARE @myCommand as NVARCHAR(1000)
SET @myCommand = 'DECLARE @value as numeric(18,' + CAST(@NrOfDecimals as VARCHAR) + ') = 1.23'
execute sp_executesql @myCommand

为了在每种情况下都这样做,您应该创建一个包含您必须运行的所有查询的表。

为了创建所有这些查询,您必须使用游标。

您可以在此处找到游标的文档:

另外,我已经回答了另一个问题,并用光标举了一个例子:

于 2013-06-19T08:40:25.657 回答