|
藍森林 http://www.lslnet.com 2006年6月6日 10:18
AIX下編譯嵌入式DB2 C程序,編譯時出現的怪問題???
AIX:5.1
DB2:7.21
數據庫:Emp
操作表:info
AIX下編譯嵌入式DB2 C程序,proc.sqc。
預編譯:embprep proc 得到proc.bnd和proc.c文件,編譯沒有錯誤發生。
編譯:xlc -o proc proc.c -ldb2 編譯正確,生成執行文件proc。
執行proc一切正常。
因為涉及到可能的移植問題,於是測試將數據庫Emp Drop掉(db2 drop database Emp),再重新建原來相同的數據庫Emp和表info,建成後執行proc,程序可正常連接數據庫,可在對表info操作時(如select)返回SQLCODE錯誤=-805,也就是說無法對表進行操作。重新編譯該程序後,運行正常!
請問:
(1)這是什麼原因呢?
(2)編譯後的二進制文件為什麼就不認後建的相同的數據庫了呢?
(3)還有-805錯誤碼的意思是什麼呢?
(4)還有..還有在DB2下怎樣查找錯誤碼的含義(如informix下的finderr nnnnxx)?
(5)...:)
不勝謝謝! |
AIX下編譯嵌入式DB2 C程序,編譯時出現的怪問題???
Up! |
AIX下編譯嵌入式DB2 C程序,編譯時出現的怪問題???
Are you 閻星百? |
AIX下編譯嵌入式DB2 C程序,編譯時出現的怪問題???
程序一般是與具體數據庫無關
所以我想你可能有其它方面問題 |
AIX下編譯嵌入式DB2 C程序,編譯時出現的怪問題???
是小夏吧!怎麼樣?在那邊還挺的住?
對了,聽說你今年運氣不錯,年前中了台二十九寸的大「鞋盒」,真是恭喜!恭喜啊!!!:) |
AIX下編譯嵌入式DB2 C程序,編譯時出現的怪問題???
DB2的嵌入式C程序,感覺真是挺煩的,而且目前來看好像真的不知道怎麼移植才好,不像Informix下的C程序,直接下傳執行碼就行了,DB2的程序卻不一樣。預編譯時,同時生成一個DBRM(DATABASE REQUEST MODULE),與數據庫有一個BIND的過程,因此在這個環境下編譯的程序,換到另一個環境下執行會返回-805錯誤的!(我想,是不是將編譯環境的數據庫IMPORT到新環境中,而不是新建,可能就不會有錯了呢?)
這個問題查了些資料也沒有解決辦法,希望在這得到個答案吧!
有時間的話,你看看這個DB2編譯的過程吧,是不是與其它的數據庫是有些不一樣呢!?
http://www.ims.state.ne.us/dba/sqlanareso.htm |
AIX下編譯嵌入式DB2 C程序,編譯時出現的怪問題???
-->
無雙,謝謝你的回復!
DB2 下的C程序,我是剛剛接觸,真是不知道如何才能實現程序和數據庫無關的運行,而不需要在新環境下還要重新編譯了!
有沒有什麼解決的辦法呢?!! |
AIX下編譯嵌入式DB2 C程序,編譯時出現的怪問題???
AIX 下的DB2數據庫不太好用,它在編譯時會產生一個PKG存放於數據庫中,
並且會對它打上時間戳。如果從新建庫獲建表的話都會破壞時間戳,必須從新編譯或rebind,以產生新的PKG。
在db2環境下
? SQL0805
可以查看錯誤代碼! |
AIX下編譯嵌入式DB2 C程序,編譯時出現的怪問題???
是啊,實在沒怎麼理解這個時間戳的真正用處何在!
這樣說的話,如果執行碼要在N台AIX上運行的話,那豈不是要將源碼在N台AIX上運行才可以,而且如果源碼改變的後,則得要在N台AIX上再編譯!這簡單是太可怕了! |
AIX下編譯嵌入式DB2 C程序,編譯時出現的怪問題???
應該是這樣的hasjing兄說的非常準確.佩服~~ |
AIX下編譯嵌入式DB2 C程序,編譯時出現的怪問題???
目前只能保留預編譯生成的proc.bnd文件,重新BIND數據庫
DB2 BIND proc.bnd解決問題,不過,還是覺得並不是解決問題的辦法! |
AIX下編譯嵌入式DB2 C程序,編譯時出現的怪問題???
時間戳的目的是為了保證db2數據庫優化策略的一致性,而且PKG的內部名稱
是SQC文件的前八個字母,所以在開發時要當心每個模塊的名字前八個字母不能相同!否則會產生PKG覆蓋,會產生818的錯誤代碼!
所以IBM的東西雖好,但是規矩太多! |
| |