DB2數(shù)據(jù)庫編譯中那兩個(gè)問題會(huì)困擾你?
此文章主要講述的是DB2數(shù)據(jù)庫編譯的兩個(gè)問題(C語言),你如果對(duì)DB2數(shù)據(jù)庫編譯的兩個(gè)問題(C語言),有興趣的話你就可以點(diǎn)擊以下的文章進(jìn)行觀看了,希望會(huì)給你帶來一些幫助在此方面。
DB2編譯C語言, 編譯, 高手
我現(xiàn)在遇到了DB2編譯的2個(gè)問題(C語言)
1、按64位編譯
makefile里db2所鏈接的庫指向64位庫,并且CC參數(shù)指明-q64時(shí)編譯,
提示"The typedef definition of wchar_t is incompatible with the option wchar_t_size"
經(jīng)查,就是32位與64位的區(qū)別。忽略此錯(cuò)誤,運(yùn)行執(zhí)行程序時(shí),所有關(guān)于數(shù)據(jù)庫的變量(sqlca.sqlcode)
值就是亂值,例如當(dāng)錯(cuò)誤碼為-303時(shí),實(shí)際應(yīng)為-303,它的值卻為538976288。
將makefile的庫指向32,并且cc編譯參數(shù)修改為-q32時(shí),上面的問題就解決了。
現(xiàn)在按要求必須按64位進(jìn)行DB2數(shù)據(jù)庫編譯,我該如何處理,以解決上面的矛盾?
2、類型不匹配
按數(shù)據(jù)庫表結(jié)構(gòu),在*.h文件中定義對(duì)應(yīng)的宏,如果結(jié)構(gòu)中有字段類型為int或long時(shí),
當(dāng)我把變量類型時(shí)定義為int時(shí)提示如下錯(cuò)誤:
- The token "int" found in a host variable declaration is not valid
很明顯,該錯(cuò)誤知int不合法,換個(gè)即可。
將所有int型修改long型時(shí)則提示:
- The 'long' host variable "fieldnum" is not valid.Use 'sqlint32' instead。
由于現(xiàn)在的機(jī)器是64位的,我將long型統(tǒng)一修改為sqlint32或sqlint64,DB2數(shù)據(jù)庫編譯均通過
但是在執(zhí)行時(shí),提示錯(cuò)誤碼為303的錯(cuò)誤,即類型不匹配:
- SQL0303N A value cannot be assigned to a host variable in the
- SELECT, VALUES, or FETCH statement because the data
- types are not compatible.
h文件中sqlint32型或sqlint64型的變量,在數(shù)據(jù)庫中定義的類型為int型。
上述的相關(guān)內(nèi)容就是對(duì)DB2數(shù)據(jù)庫編譯的2個(gè)問題(C語言),DB2高手的請(qǐng)進(jìn)的描述,希望會(huì)給你帶來一些幫助在此方面。
【編輯推薦】