2016-10-14 32 views
0

在PRO C中,PREPARE QUERY何時失敗?在PRO C中,PREPARE QUERY何時失敗?

EXEC SQL AT :db_id PREPARE QUERY FROM :sql_query; 

bool sql_status = (sqlca.sqlcode == OERR_ORACLE_SUCCESS); 

if (sql_status) 
{ 
} 
else 
{ 
} 

我沒有這個問題,直到最近,該代碼是工作的罰款的PREPARE查詢工作的罰款(進入如loop_,但突然的失敗,之後不工作(去到其他環路)。

什麼都沒有改變,它是相同的二進制。

是否有人在過去面臨與之相似的問題?

+0

我猜你可能想看看sql_query的價值,因爲它是動態地從準備。 –

回答

0

我寫PRO * C的很多過去,和隨着時間的推移,意識到你不想檢查返回代碼PREPARE語句,因爲它從不返回任何值。這裏是我的意思:

PREPARE sqlca.sqlcode值是在PREPARE語句之前立即運行的語句的返回代碼。換句話說,如果您檢查PREPARE語句的輸出和在PREPARE語句失敗之前執行的語句,那麼prepare的返回碼失敗。如果先前的語句成功,則PREPARE似乎已成功。

換句話說,準備sqlca.sqlcode值基本上沒有(它從來沒有失敗)。因此,如果PREPARE現在失敗,請檢查在PREPARE語句之前執行的語句,並確保您正在檢查該語句的sqlca.sqlcode值。我敢打賭,前面的陳述失敗了,並且返回的錯誤與該陳述有關。合理?

-Jim

+0

感謝您的回覆,我會仔細研究這個問題。 – naren

+0

但是你有任何官方網頁或文檔支持你的觀點嗎?提前致謝。 – naren