设置变量等于负数

时间:2013-05-08 03:10:39

标签: sql-server stored-procedures

这应该是一个简单的程序,但我遇到了麻烦。我有一个插入命令。其中一个值需要=到-1。该字段被定义为一个小整数,因此它应该接受正值和负值。

插入语句是

insert into MasterData2 ([Ad],[Phase],[Page Type] , [Page], [Percent] , [Change Type],[UserName], [Timestamp], [Qty]) 
values(@Ref, @PhaseName , @PageType , @Page , @Percent ,@ChngType, @UserName, @Timestamp, -1)

字段[数量]需要为-1

1 个答案:

答案 0 :(得分:1)

如果需要存储POSITIVE和NEGATIVE值,则可以使用的最小整数类型是smallint。 tinyint仅适用于0到255的POSITIVE值。

MSDN参考:tinyint, smallint, int, bigint

Data type | Range
======================
bigint    | -2^63 (-9,223,372,036,854,775,808) to 2^63-1 (9,223,372,036,854,775,807)
int       | -2^31 (-2,147,483,648) to 2^31-1 (2,147,483,647)
smallint  | -2^15 (-32,768) to 2^15-1 (32,767)
tinyint   | 0 to 255

参见示例:

create table #tmp (t tinyint, x smallint)
insert #tmp select 1,-1

-- OK

insert #tmp select -1,-1

--
Msg 220, Level 16, State 2, Line 1
Arithmetic overflow error for data type tinyint, value = -1.
The statement has been terminated.