1. 打開PL/SQL Developer如果 在機(jī)器上安裝了PL/SQL Developer的話,打開PL/SQL Developer界面輸入 用戶名,密碼和host名字,這個(gè)跟在程序中web.config中配置的完全相同,點(diǎn)擊確定 找到 需要調(diào)試的存儲(chǔ)過程所在的包(Package bodies),如PACK_ACTIVITY,點(diǎn)擊右鍵,在彈出菜單中選擇[查看],得到包中的所有存儲(chǔ)過程和他們的代碼. 2. 添加debug信息為了 能夠單步跟蹤存儲(chǔ)過程,需要為其所在的包添加debug信息,右鍵點(diǎn)擊需要調(diào)試的包,在彈出菜單中選中[添加調(diào)試信息].這樣 就為包體添加了調(diào)試信息。 3. 調(diào) 試存儲(chǔ)過程現(xiàn)在 所有的準(zhǔn)備工作都做好了,可以調(diào)試跟蹤存儲(chǔ)過程了。選擇 需要調(diào)試的存儲(chǔ)過程,點(diǎn)擊右鍵,在彈出菜單中 選擇[測試],進(jìn)去測試窗口.測試窗口中有為了測試該存儲(chǔ)過程自動(dòng)所產(chǎn)生的代碼,當(dāng)然你也可以自己另外加入和修改代碼,對于我們目前只是為了調(diào)試存儲(chǔ)過程, 自動(dòng)生成的代碼已經(jīng)足夠了。接著按照如下的步驟進(jìn)行調(diào)試。(1)添加存儲(chǔ)過程所需要的參數(shù),我們項(xiàng)目中的大多數(shù)存儲(chǔ)過程都是需要參數(shù) 的,參數(shù)可以在測試窗口右下部分輸入。如:GetPanNO_New需要一個(gè)輸入?yún)?shù)v_employeeid,我們輸入180,輸出參數(shù)是mycursor,是查看結(jié)果的,不需要輸入任何值。 (2)開始調(diào)試,點(diǎn)擊[調(diào)試]菜單-[開始](或者按F9),就進(jìn)去調(diào)試模式了,程序開始停在begin這一行. (3)以后的調(diào)試過程跟我們熟悉的的調(diào)試過程就一樣了:運(yùn)行(Ctrl+R)單步 進(jìn)入(Ctrl+N)單步 跳過(Ctrl+O)單步 退出(Ctrl+T)或者 點(diǎn)擊debug工具條上的按扭:當(dāng)按Ctrl+N進(jìn)去存儲(chǔ)過程的源代碼中后 在這 個(gè)窗口中可以查看過程中的變量值和堆棧。 (4)調(diào)試運(yùn)行完了后,可以查看結(jié)果如下(點(diǎn)擊mycursor變量旁邊的按鈕). 4. Tip 令人 比較郁悶的是我們項(xiàng)目中很多的存儲(chǔ)過程都是一個(gè)SELECT語句,不管這個(gè)SELECT語句多么復(fù)雜(SELECT語句中有嵌套的子SELECT語句),它也只能作為一行代碼,單步跟蹤就沒有什么意義了。
成都創(chuàng)新互聯(lián)公司致力于互聯(lián)網(wǎng)品牌建設(shè)與網(wǎng)絡(luò)營銷,包括成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站制作、SEO優(yōu)化、網(wǎng)絡(luò)推廣、整站優(yōu)化營銷策劃推廣、電子商務(wù)、移動(dòng)互聯(lián)網(wǎng)營銷等。成都創(chuàng)新互聯(lián)公司為不同類型的客戶提供良好的互聯(lián)網(wǎng)應(yīng)用定制及解決方案,成都創(chuàng)新互聯(lián)公司核心團(tuán)隊(duì)10多年專注互聯(lián)網(wǎng)開發(fā),積累了豐富的網(wǎng)站經(jīng)驗(yàn),為廣大企業(yè)客戶提供一站式企業(yè)網(wǎng)站建設(shè)服務(wù),在網(wǎng)站建設(shè)行業(yè)內(nèi)樹立了良好口碑。
用如下語句:
select?*?from?user_triggers?where?table_owner?=?'xxx'?and?table_name?=?upper('table_name');
檢測的話,你可以查詢兩個(gè)a、b表的數(shù)據(jù)量來印證。
觸發(fā)器沒有運(yùn)行日志,需要自己去添加。
就是自己在觸發(fā)器里面寫數(shù)據(jù)到日志表(需要自己創(chuàng)建)里面。
select * from dba_triggers where owner=用戶名;查看這個(gè)用戶的所有觸發(fā)器
select * from dba_constraints T where owner=用戶名 AND T.CONSTRAINT_TYPE='F';查看這個(gè)用戶中所有的外鍵約束,table_name顯示了建立在哪個(gè)表上
看你的觸發(fā)器里需要觸發(fā)的是什么類型的sql語句,說個(gè)思路,
你可以根據(jù)觸發(fā)器里面的sql text去查詢這個(gè)語句最后的執(zhí)行時(shí)間是什么時(shí)候,
當(dāng)然如果你的oracle已經(jīng)開啟了歸檔日志,你可以直接借助于logminer去分析一段時(shí)間內(nèi)的歸檔日志,然后用select ... like的方式去查找這個(gè)語句是在什么時(shí)刻執(zhí)行過。過程復(fù)雜了一些,但是實(shí)現(xiàn)起來不難。
select * ?from user_objects where object_name = trigger_name ?and status='INVALID'
甲骨文股份有限公司(NASDAQ:ORCL,Oracle)是全球大型數(shù)據(jù)庫軟件公司。總部位于美國加州紅木城的紅木岸(Redwood Shores),現(xiàn)時(shí)首席執(zhí)行官為公司創(chuàng)辦人勞倫斯·埃里森(Lawrence J. Ellison)。
觸發(fā)器(trigger)是SQL server 提供給程序員和數(shù)據(jù)分析員來保證數(shù)據(jù)完整性的一種方法,它是與表事件相關(guān)的特殊的存儲(chǔ)過程,它的執(zhí)行不是由程序調(diào)用,也不是手工啟動(dòng),而是由事件來觸發(fā),比如當(dāng)對一個(gè)表進(jìn)行操作( insert,delete, update)時(shí)就會(huì)激活它執(zhí)行。
觸發(fā)器可以查詢其他表,而且可以包含復(fù)雜的SQL語句。它們主要用于強(qiáng)制服從復(fù)雜的業(yè)務(wù)規(guī)則或要求。例如:您可以根據(jù)客戶當(dāng)前的帳戶狀態(tài),控制是否允許插入新訂單。
觸發(fā)器也可用于強(qiáng)制引用完整性,以便在多個(gè)表中添加、更新或刪除行時(shí),保留在這些表之間所定義的關(guān)系。然而,強(qiáng)制引用完整性的最好方法是在相關(guān)表中定義主鍵和外鍵約束。如果使用數(shù)據(jù)庫關(guān)系圖,則可以在表之間創(chuàng)建關(guān)系以自動(dòng)創(chuàng)建外鍵約束。
觸發(fā)器與存儲(chǔ)過程的唯一區(qū)別是觸發(fā)器不能執(zhí)行EXECUTE語句調(diào)用,而是在用戶執(zhí)行Transact-SQL語句時(shí)自動(dòng)觸發(fā)執(zhí)行。