gpt4 book ai didi

sql-server - 为什么在我的存储过程中将整数传递给小数时会出错?

转载 作者:行者123 更新时间:2023-12-01 06:25:34 24 4
gpt4 key购买 nike

为什么在调用存储过程时出现错误?

这失败了:

exec dbo.foo 100

但这有效:
exec dbo.foo 99

定义:
CREATE PROCEDURE dbo.foo
(
@latitude DECIMAL (16,14)
)
AS
BEGIN
PRINT 'OK'
END

错误信息:
Msg 8114, Level 16, State 1, Procedure foo, Line 0
Error converting data type int to decimal.

最佳答案

十进制(16,14) means "16 digits, 14 after decimal point" .这意味着小数点前是 2。 “100”超出范围,因为它是 3 个数字...

快速示例

DECLARE @fail decimal(16, 14), @pass decimal(17, 14)

BEGIN TRY
SET @pass = 100
END TRY
BEGIN CATCH
PRINT 'Will not see this'
END CATCH

BEGIN TRY
SET @fail = 100
END TRY
BEGIN CATCH
PRINT 'Will see this'
END CATCH

关于sql-server - 为什么在我的存储过程中将整数传递给小数时会出错?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5009971/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com