Oracle Forms Server Troubleshooting
2024-08-29 13:41:53
供稿:網(wǎng)友
Oracle Forms Server 疑難排解Oracle 技術(shù)白皮書1 CHECKING FOR FORM_SUCCESS AFTER CALLING A FORMS BUILT-IN 在調(diào)用一個(gè)form后,通過 FORM_SUCCESS 內(nèi)置子程序返回一個(gè)可以表示最近一個(gè)表單操作成功與否的布爾值,其值為TRUE(成功)和FALSE(失敗、嚴(yán)重錯(cuò)誤)。假如內(nèi)置子程序沒有成功執(zhí)行,應(yīng)該觸發(fā)FORM_TRIGGER_FAILURE異常處理程序。 FORM_FAILURE/FORM_FATAL 其中 FORM_FAILURE是與FORM_SUCCESS對(duì)應(yīng),而FORM_FATAL的結(jié)果值為TRUE(嚴(yán)重錯(cuò)誤)和FALSE(成功、失敗)2 TROUBLESHOOTING WITH “QUICK AND DIRTY” TECHNIQUES 四種技巧:commenting out code, using the “message” built-in, using the “debug_messages=yes” runtime option, and using the “break” built-in. a)注釋出你懷疑有問題的代碼 注釋掉一行代碼用:"--",注釋掉一段代碼用:"/**/".假如注釋掉一個(gè)完整的觸發(fā)器和程序單元,那么你至少需要包括該代碼: null; 當(dāng)修復(fù)了問題和查出問題所在處時(shí),千萬(wàn)別忘了把沒有用注釋去掉 b)利用message內(nèi)置子程序 例如: message('The table contains 'to_char(empcount)' employees');
synchronize;
message('Runtotals = ':control.runtotals);
--Runtotals will be either“YES” or “NO”
synchronize;
message('Beginning Runtotals PRogram unit');
synchronize; message 可以在消息行上顯示指定的文本,而且需要把任何數(shù)字和日期值轉(zhuǎn)換為文本內(nèi)型,變量保持在單引號(hào)外面,用""來連接其他字符串 synchronize 將顯示器的屏幕與表單的內(nèi)部狀態(tài)同步 ,從而確保在代碼內(nèi)的某個(gè)消息顯示在要求的位置 pause 可以替代synchronize,它不僅使顯示同步,而且暫停程序處理,直到(強(qiáng)制)用戶按了一個(gè)功能鍵為止 c)利用表單的"DEBUG_MESSAGES=YES" runtime選項(xiàng) 可以從菜單設(shè)置:Tools -> preferences,也可以從命令行設(shè)置:
On windows:
c:/orant/bin/ifrun60.exe module=myform userid=scott/tiger
debug_messages=yes On Unix:
f60runm module=myform userid=scott/tiger debug_messages=yes d)利用BREAK 內(nèi)置子程序 用于中斷表格執(zhí)行并顯示調(diào)試器,用戶可以通過調(diào)試器來查看form、program、全局、系統(tǒng)變量--今天已經(jīng)看完了,后面的筆記也順便寫了,因?yàn)闆]有及時(shí)保存,導(dǎo)致在更新數(shù)據(jù)時(shí)全部丟失,也使幾個(gè)小時(shí)的心血全部白流! ;-(~~~~~~~~