方法/步驟
創(chuàng)新互聯(lián)是一家專注于成都網(wǎng)站建設(shè)、網(wǎng)站設(shè)計與策劃設(shè)計,西疇網(wǎng)站建設(shè)哪家好?創(chuàng)新互聯(lián)做網(wǎng)站,專注于網(wǎng)站建設(shè)十多年,網(wǎng)設(shè)計領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:西疇等地區(qū)。西疇做網(wǎng)站價格咨詢:18980820575
首先在PL/SQL的左側(cè)資源欄中展開Procedures項(圖中位置1),然后再其上面的搜索框中(圖中位置2)輸入存過名稱的關(guān)鍵詞,按回車鍵搜索要調(diào)試的存過,不停的回車,直到找到想要調(diào)試的存過。
找到想要調(diào)試的存過,左鍵單擊選中該存過(圖中位置1),然后右鍵單擊該存過,從彈出菜單中選擇“Test”項(圖中位置2)。
單擊“Test”后,PL\SQL會打開調(diào)試界面,圖中位置1的按鈕就是開始調(diào)試的按鈕,在調(diào)試之前要填寫存過的參數(shù),位置2就是填寫參數(shù)的地方,如果有多個參數(shù),會有多行參數(shù)框,按參數(shù)名填寫相應(yīng)的參數(shù)即可。
填寫完參數(shù),單擊開始調(diào)試按鈕后,調(diào)試的界面會發(fā)生一些變化。圖中位置1的變化,說明存過已經(jīng)處于執(zhí)行狀態(tài),別人不能再編譯或者執(zhí)行。位置2的按鈕就是執(zhí)行按鈕,單擊這個按鈕存過會執(zhí)行完成或者遇到bug跳出,否則是不會停下來的,調(diào)試時不會用這個按鈕的。位置3的按鈕才是關(guān)鍵——單步執(zhí)行,就是讓代碼一行一行的執(zhí)行,位置4的按鈕是跳出單步執(zhí)行,等待下一個指令。
單擊“單步執(zhí)行”,存過開始單步執(zhí)行。界面中每一次執(zhí)行的代碼會高亮顯示(圖中位置1),如果想要看某個變量具體的值,就在位置2的地方輸入該變量名,然后變量的值會顯示在位置3的地方。
調(diào)試的時候,每一次單步執(zhí)行的時候要記一下執(zhí)行代碼的行數(shù),圖中位置3的數(shù)字就是當前執(zhí)行代碼的行數(shù),就是第幾行。如果過程單步執(zhí)行到某行后,再單步執(zhí)行的時候,存過就退出,那么錯誤就在該行的下一行。
代碼執(zhí)行到24行,在往下執(zhí)行時,直接轉(zhuǎn)到exception的地方,也就是異常處理的部分。
這說明我們代碼中的錯誤在24和25行上,我們打開存過,瀏覽到24行和25行附近,發(fā)現(xiàn)25行和24行使用了兩個變量,記住那兩個變量。重新開始調(diào)試過程。
單步的執(zhí)行時候把剛才那兩個變量名填寫到變量查看框,一邊觀察變量值變化,一邊單步執(zhí)行,執(zhí)行到24行的時候,發(fā)現(xiàn)一個變量已經(jīng)有值了,而另一個變量的值為null。錯誤原因明朗了吧?就是變量沒有賦值或者初始話,給該變量賦值后存過就不報錯了。
具體如下:
1、第一步,創(chuàng)建一個新的存儲過程,見下圖,轉(zhuǎn)到下面的步驟。
2、第二步,完成上述步驟后,修改存儲過程。
此存儲過程具有一個輸入?yún)?shù)(pid)和一個輸出參數(shù),即通過用戶id查詢用戶名并返回名稱,見下圖,轉(zhuǎn)到下面的步驟。
3、第三步,完成上述步驟后,調(diào)試存儲過程,找到新創(chuàng)建的存儲過程,右鍵單擊[test]按鈕,見下圖,轉(zhuǎn)到下面的步驟。
4、第四步,完成上述步驟后,修改id值,然后單擊左上角的“倒三角”按鈕以開始調(diào)試,見下圖,轉(zhuǎn)到下面的步驟。
5、第五步,完成上述步驟后,按[CTRL +
N]進行單步調(diào)試,按[CTRL + O]單步調(diào)試,按[CTRL + T]退出調(diào)試,或者單擊調(diào)試工具進行調(diào)試,見下圖,轉(zhuǎn)到下面的步驟。
6、第六步,完成上述步驟后,可以在窗口底部輸入變量名稱,以觀察變量的變化,見下圖,轉(zhuǎn)到下面的步驟。
7、第七步,完成上述步驟后,可以查看調(diào)試結(jié)果,見下圖。這樣,就解決了這個問題了。
1.打開PL/SQL Developer 如果在機器上安裝了PL/SQL Developer的話,打開PL/SQL Developer界面 輸入用戶名,密碼和host名字,這個跟在程序中web.config中配置的完全相同,點擊確定 找到需要調(diào)試的存儲過程所在的包(Package bodies),如PACK_ACTIVITY,點擊右鍵,在彈出菜單中選擇[查看],得到包中的所有存儲過程和他們的代碼. 2.添加debug信息 為了能夠單步跟蹤存儲過程,需要為其所在的包添加debug信息,右鍵點擊需要調(diào)試的包,在彈出菜單中選中[添加調(diào)試信息]. 這樣就為包體添加了調(diào)試信息。 3.調(diào)試存儲過程 現(xiàn)在所有的準備工作都做好了,可以調(diào)試跟蹤存儲過程了。 選擇需要調(diào)試的存儲過程,點擊右鍵,在彈出菜單中選擇[測試],進去測試窗口. 測試窗口中有為了測試該存儲過程自動所產(chǎn)生的代碼,當然你也可以自己另外加入和修改代碼,對于我們目前只是為了調(diào)試存儲過程,自動生成的代碼已經(jīng)足夠了。接著按照如下的步驟進行調(diào)試。 (1)添加存儲過程所需要的參數(shù),我們項目中的大多數(shù)存儲過程都是需要參數(shù)的,參數(shù)可以在測試窗口右下部分輸入。 如:GetPanNO_New需要一個輸入?yún)?shù)v_employeeid,我們輸入180,輸出參數(shù)是mycursor,是查看結(jié)果的,不需要輸入任何值。 (2)開始調(diào)試,點擊[調(diào)試]菜單-[開始](或者按F9),就進去調(diào)試模式了,程序開始停在begin這一行. (3)以后的調(diào)試過程跟我們熟悉的的調(diào)試過程就一樣了: 運行(Ctrl+R) 單步進入(Ctrl+N) 單步跳過(Ctrl+O) 單步退出(Ctrl+T) 或者點擊debug工具條上的按扭: 當按Ctrl+N進去存儲過程的源代碼中后 在這個窗口中可以查看過程中的變量值和堆棧。 (4)調(diào)試運行完了后,可以查看結(jié)果如下(點擊mycursor變量旁邊的按鈕).
1.
編寫Oracle存儲過程腳步如下:CREATE
OR
REPLACE
PROCEDURE
P_AUTO_CREATE_PARTITION
(Result
Out
int,
LogErrDesc
Out
varchar2
)
is
type
TypeTable
is
table
of
varchar2(20);
CreatePartitionErr
exception;
days
TypeTable;
BEGIN
Result
:=
0;
SELECT
DATETIME
bulk
collect
into
days
FROM
(
SELECT
TO_CHAR(TRUNC(SYSDATE-2,'dd'),'YYYYMMDD')
AS
DATETIME
FROM
DUAL
UNION
SELECT
TO_CHAR(TRUNC(SYSDATE-1,'dd'),'YYYYMMDD')
AS
DATETIME
FROM
DUAL
UNION
SELECT
TO_CHAR(TRUNC(SYSDATE,'dd'),'YYYYMMDD')
AS
DATETIME
FROM
DUAL
UNION
SELECT
TO_CHAR(TRUNC(SYSDATE+1,'dd'),'YYYYMMDD')
AS
DATETIME
FROM
DUAL
UNION
SELECT
TO_CHAR(TRUNC(SYSDATE+2,'dd'),'YYYYMMDD')
AS
DATETIME
FROM
DUAL
);
for
i
in
1..days.count
loop
if
bruce_partiton.CreatePartitions('T_CDT_1X_BASIC_Partion',days(i))0
then
raise
CreatePartitionErr;
end
if;
end
loop;
--名字寫錯了bruce_partiton,應(yīng)該為bruce_partition
commit;
--異常處理
EXCEPTION
WHEN
CreatePartitionErr
THEN
rollback;
Result
:=
-1;
LogErrDesc
:=
SQLERRM;
commit;
RETURN;
WHEN
OTHERS
THEN
rollback;
Result
:=
-2;
LogErrDesc
:=
'CDM_CTCALLTRACEINFO_PRC_NEW
Fail!'||substr(dbms_utility.format_error_stack,1,200);
commit;
RETURN;
END
P_AUTO_CREATE_PARTITION;
/
2.
調(diào)試
在PL/SQL中選擇存儲過程,右鍵TEST,
ADD
DEBUGINFO,3.
運行,在Program
Window中
PL/SQL中為我們提供了調(diào)試存儲過程的功能 可以幫助你完成存儲過程的預(yù)編譯與測試
點擊要調(diào)試的存儲過程 右鍵選擇TEST
如果需要查看變量 當然調(diào)試都需要 在右鍵菜單中選擇Add debug information
start debugger(F )開始我們的測試 Run(Ctrl+R)
隨時在varible List中輸入我們想查看的變量
其它
Step into(Ctrl+N):單步調(diào)試 進入下一步
Step over(Ctrl+O) 結(jié)束該語句
Step out(Ctrl+T) 跳出該過程
Run to next exception 進入下一個斷點Breakpoint
lishixinzhi/Article/program/Oracle/201311/18320
1、首先是編寫存儲過程,編譯無誤;
2、添加debug信息。為了能夠單步跟蹤存儲過程,需要為其所在的包添加debug信息,右鍵點擊需要調(diào)試的存儲過程名稱,在彈出菜單中選中[add debug information],這樣就為包體添加了調(diào)試信息;
3、選擇需要調(diào)試的存儲過程名稱,點擊右鍵,在彈出菜單中 選擇[Test],進去測試窗口,測試窗口中有為了測試該存儲過程自動所產(chǎn)生的代碼,當然你也可以自己另外加入和修改代碼,自動生成的代碼已經(jīng)足夠了。