为什么我在调用存储过程时出错?
这失败了:
exec dbo.foo 100
Run Code Online (Sandbox Code Playgroud)
但这有效:
exec dbo.foo 99
Run Code Online (Sandbox Code Playgroud)
定义:
CREATE PROCEDURE dbo.foo
(
@latitude DECIMAL (16,14)
)
AS
BEGIN
PRINT 'OK'
END
Run Code Online (Sandbox Code Playgroud)
错误信息:
Msg 8114, Level 16, State 1, Procedure foo, Line 0
Error converting data type int to decimal.
Run Code Online (Sandbox Code Playgroud)
gbn*_*gbn 12
十进制(16,14)表示"16位数,小数点后14位".这意味着小数点前 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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2215 次 |
| 最近记录: |