2011年10月13日 星期四

[Asp].建議使用 clng 函數 來取代 cint 函數

最近遇到一個舊系統, 因為程式裡使用了 cint 造成溢位的錯誤, 研究了一下 asp 裡的 int 內容值只可以允許 -32,768 到 32,767.

只能存到 32767, 其實還滿容易造成溢位的, 我遇到的錯誤是要挑戰把 5萬這個數字, 使用 cint 做轉換,
錯誤訊息如下圖所示:




順便, 研究一下 SQL Server 使用整數數據的精確數字數據類型。
 ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
  ★ bigint
 ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
從 -2^63 (-9223372036854775808) 到 2^63-1 (9223372036854775807) 的整型數據(所有數字)。存儲大小為 8 個 bytes。


 ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
  ★ int
 ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
從 -2^31 (-2,147,483,648) 到 2^31 - 1 (2,147,483,647) 的整型數據(所有數字)。存儲大小為 4 個bytes。
int 的 SQL-92 同義字為 integer。


 ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
  ★ smallint
 ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
從 -2^15 (-32,768) 到 2^15 - 1 (32,767) 的整型數據。存儲大小為 2 個bytes。



 ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
  ★ tinyint
 ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
從 0 到 255 的整型數據。存儲大小為 1 byte。



附註: 這個辦法, 不是萬能的, 修改後, 或使用 clng 後, 記得看看會不會影響到其他的變數或database裡的其他欄位.

沒有留言:

張貼留言

Facebook 留言板