Pro*C的整數溢出測試

來源:互聯網
上載者:User

測試發現,Pro*C中,不管ORACLE資料庫中的number欄位是多大,只要欄位的值大於綁定的變數所能夠容納的範圍,就會出現“ORA-01455: 轉換列溢出整數資料類型”。

不過,Pro*C不支援long long(64位)類型的綁定。當number欄位的值大於2147483647或小於- 2147483648時,建議使用double類型來綁定,然後再將double類型轉換成long long類型。

double temp;long long value;//…

EXEC SQL SELECT large_value INTO :temp FROM some_table; //….

value = (long long)temp;
 還有另一種做法,不過效率沒有上一種高:
#include <stdlib> //….char buf[22];long long value;//….

EXEC SQL SELECT large_value INTO :buf FROM some_table; //…

value = strtoll(buf, NULL, 0);   //無符號類型使用strtoull// 注意:windows平台的函數名為_strtoi64()和_strtoiu64()
 對應的值的範圍為:
資料類型 長度(位) 數值範圍
char 8 -128 至127
unsigned char 8 0至255
short 16 -32768至32767
unsigned short 16 0至65535
int 32 - 2147483648至2147483647
unsigned int 32 0 - 4294967295
long long 64 - 9223372036854775808至9223372036854775807
unsigned long long 64 0至18446744073709551615
   供參考。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.