soci庫中使用oracle組函數導致bad_cast異常

    soci是一個用C++封裝的數據庫訪問庫,soci是“Simple Oracle Call Interface”的縮寫(現在支持的不只有oracle數據庫了),在github(https://github.com/SOCI/soci)上有開源代碼

     有一天在使用過程中發現程序拋出了bad_cast的異常,一般情況下出現這種錯誤是因爲程序指定的數據類型與數據庫的存儲類型不一致導致的,當時執行的sql語句是:select max(fvalue),avg(fvalue),min(fvalue) from table1 group by type,因爲fvalue在數據庫的類型爲number(16,6),在程序中獲取number(16,6)類型的數據時指定泛型爲double類型,通過調試發現,soci中max(fvalue)的返回結果爲居然是個整數,坑爹啊!!!說好的的小數位去哪了!!!

     已經給作者提提交了問題,還沒得到迴應,先暫時使用to_char函數,把組函數的結果轉換成字符串類型返回,sql爲select to_char(max(fvalue)),to_char(avg(fvalue)), to_char(min(fvalue)) from table1 group by type函數,程序中再用atof轉換成double類型使用。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章