T-SQL参数

Ice*_*ind 2 sql t-sql sql-server sql-server-2000

我在SQL Server 2000中有下表:

TABLE_NAME         |     COLUMN_NAME      |     TYPE_NAME      |    PRECISION    |    LENGTH  |    SCALE        |
test                     TestID                 int                 10                   4            0
test                     TestDecimal            decimal             18                   20           2
test                     TestFloat              float               15                   8            NULL
test                     TestMoney              money                19                   21            4
Run Code Online (Sandbox Code Playgroud)

我的问题是,如果我想创建一个基于我的表字段获取4个参数的存储过程,我该怎么做.我有这个解决方案:

CREATE PROCEDURE TestProc ( @TestID int, @TestDecimal decimal, @TestFloat float, @TestMoney money ) 
AS
.....
.....
.....
GO
Run Code Online (Sandbox Code Playgroud)

这是有效的,除了我认为@TestDecimal丢失其小数部分,从而将其转换为整数.我需要将@TestDecimal十进制(精度,比例)而不是十进制吗?如果是这样,我需要指定这种类型的参数编码的其他数值数据类型吗?

gbn*_*gbn 5

是的,您需要为十进制/数字指定(18,2)

这同样适用于float/real,(n)varchar,(n)char,(var)二进制,datetime2(错过任何?)

不同的精度,比例或长度实际上是不同的数据类型,并且将发生转换.

示例问题为什么不同的varchar长度会产生不同的数据类型