首页
学习
活动
专区
圈层
工具
发布

T-SQL参数
EN

Stack Overflow用户
提问于 2009-10-27 04:16:36
回答 2查看 695关注 0票数 2

我在SQL Server 2000中有以下表格:

代码语言:javascript
复制
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个参数的存储过程,我该怎么做呢?我有这样的解决方案:

代码语言:javascript
复制
CREATE PROCEDURE TestProc ( @TestID int, @TestDecimal decimal, @TestFloat float, @TestMoney money ) 
AS
.....
.....
.....
GO

这是可行的,除非我认为@TestDecimal丢失了它的小数部分,从而将它转换成一个整数。我需要把@TestDecimal decimal (精度,小数位数)而不是只放十进制吗?如果是这样的话,我是否需要其他的数字数据类型来指定这种类型的参数编码?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-10-27 04:22:52

是,您需要指定(18,2)作为小数/数字

这同样适用于浮点数/实数,(n)varchar,(n)char,(var)binary,datetime2 (错过了任何?)

不同的精度、小数位数或长度实际上是不同的数据类型,将发生转换。

Example question解释了为什么不同的varchar长度会导致不同的数据类型

票数 5
EN

Stack Overflow用户

发布于 2009-10-27 04:23:36

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1627092

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档