T-SQL 参数

发布于 2024-08-09 20:19:04 字数 934 浏览 3 评论 0原文

我在 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

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

CREATE PROCEDURE TestProc ( @TestID int, @TestDecimal decimal, @TestFloat float, @TestMoney money ) 
AS
.....
.....
.....
GO

这有效,但我认为 @TestDecimal 丢失了其小数部分,从而将其转换为整数。我是否需要输入 @TestDecimal 小数(Precision,Scale) 而不仅仅是小数?如果是这样,是否需要任何其他数字数据类型来指定这种类型的参数编码?

I have the following table in 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

My question is, if I wanted to created a stored procedure that takes 4 parameters based on my table fields, how do I do this. I have this solution:

CREATE PROCEDURE TestProc ( @TestID int, @TestDecimal decimal, @TestFloat float, @TestMoney money ) 
AS
.....
.....
.....
GO

This works, except I think @TestDecimal loses its decimal portion, thus converting it into a whole number. Do I need to put @TestDecimal decimal(Precision,Scale) instead of just decimal? and if so, is there any other numeric datatypes that I need to specify this type of parameter encoding?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

失去的东西太少 2024-08-16 20:19:04

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

这同样适用于 float/real、(n)varchar、(n)char、(var)binary、datetime2 (错过了任何一个?)

不同的精度、小数位数或length 实际上是不同的数据类型,并且会发生转换。

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

Yes, you need to specifc (18,2) for decimal/numeric

The same applies to float/real, (n)varchar, (n)char, (var)binary, datetime2 (missed any?)

A different precision, scale or length is in effect a different datatype and a conversion will occur.

Example question of why differenmt varchar lengths make different datatypes

十秒萌定你 2024-08-16 20:19:04

您的参数类型必须与数据库列类型匹配。数据库类型不仅由其基本类型定义,而且在适用时还由其实际长度和精度定义。在您的示例中,TestDecimal id 实际上是DECIMAL(18,2)

Your parameter type must match the database column type. A database type is defined not only by its base type, but also by its actual length and precision, when it applies. TestDecimal id actualy DECIMAL(18,2) in your example.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文