1.
創(chuàng)新互聯(lián)-成都網(wǎng)站建設(shè)公司,專注網(wǎng)站設(shè)計制作、網(wǎng)站制作、網(wǎng)站營銷推廣,域名申請,網(wǎng)站空間,成都網(wǎng)站托管有關(guān)企業(yè)網(wǎng)站制作方案、改版、費(fèi)用等問題,請聯(lián)系創(chuàng)新互聯(lián)。
編寫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.
運(yùn)行,在Program
Window中
方法/步驟
首先在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ù)字就是當(dāng)前執(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.
打開PL/SQL
Developer如果
在機(jī)器上安裝了PL/SQL
Developer的話,打開PL/SQL
Developer界面輸入
用戶名,密碼和host名字,這個跟在程序中web.config中配置的完全相同,點(diǎn)擊確定
找到
需要調(diào)試的存儲過程所在的包(Package
bodies),如PACK_ACTIVITY,點(diǎn)擊右鍵,在彈出菜單中選擇[查看],得到包中的所有存儲過程和他們的代碼.
2.
添加debug信息為了
能夠單步跟蹤存儲過程,需要為其所在的包添加debug信息,右鍵點(diǎn)擊需要調(diào)試的包,在彈出菜單中選中[添加調(diào)試信息].這樣
就為包體添加了調(diào)試信息。
3.
調(diào)
試存儲過程現(xiàn)在
所有的準(zhǔn)備工作都做好了,可以調(diào)試跟蹤存儲過程了。選擇
需要調(diào)試的存儲過程,點(diǎn)擊右鍵,在彈出菜單中
選擇[測試],進(jìn)去測試窗口.測試窗口中有為了測試該存儲過程自動所產(chǎn)生的代碼,當(dāng)然你也可以自己另外加入和修改代碼,對于我們目前只是為了調(diào)試存儲過程,
自動生成的代碼已經(jīng)足夠了。接著按照如下的步驟進(jìn)行調(diào)試。(1)添加存儲過程所需要的參數(shù),我們項目中的大多數(shù)存儲過程都是需要參數(shù)
的,參數(shù)可以在測試窗口右下部分輸入。如:GetPanNO_New需要一個輸入?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)去存儲過程的源代碼中后
在這
個窗口中可以查看過程中的變量值和堆棧。
(4)調(diào)試運(yùn)行完了后,可以查看結(jié)果如下(點(diǎn)擊mycursor變量旁邊的按鈕).
4.
Tip
令人
比較郁悶的是我們項目中很多的存儲過程都是一個SELECT語句,不管這個SELECT語句多么復(fù)雜(SELECT語句中有嵌套的子SELECT語句),它也只能作為一行代碼,單步跟蹤就沒有什么意義了。
具體如下:
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]進(jìn)行單步調(diào)試,按[CTRL + O]單步調(diào)試,按[CTRL + T]退出調(diào)試,或者單擊調(diào)試工具進(jìn)行調(diào)試,見下圖,轉(zhuǎn)到下面的步驟。
6、第六步,完成上述步驟后,可以在窗口底部輸入變量名稱,以觀察變量的變化,見下圖,轉(zhuǎn)到下面的步驟。
7、第七步,完成上述步驟后,可以查看調(diào)試結(jié)果,見下圖。這樣,就解決了這個問題了。
1、首先是編寫存儲過程,編譯無誤;
2、添加debug信息。為了能夠單步跟蹤存儲過程,需要為其所在的包添加debug信息,右鍵點(diǎn)擊需要調(diào)試的存儲過程名稱,在彈出菜單中選中[add debug information],這樣就為包體添加了調(diào)試信息;
3、選擇需要調(diào)試的存儲過程名稱,點(diǎn)擊右鍵,在彈出菜單中 選擇[Test],進(jìn)去測試窗口,測試窗口中有為了測試該存儲過程自動所產(chǎn)生的代碼,當(dāng)然你也可以自己另外加入和修改代碼,自動生成的代碼已經(jīng)足夠了。
oracle存儲過程調(diào)試方法
PL/SQL中為我們提供了【調(diào)試存儲過程】的功能,可以幫助你完成存儲過程的預(yù)編譯與測試。
點(diǎn)擊要調(diào)試的存儲過程,右鍵選擇TEST
如果需要查看變量,當(dāng)然調(diào)試都需要。在右鍵菜單中選擇Add debug information.
start debugger(F9)開始我們的測試,Run(Ctrl+R)
隨時在varible List中輸入我們想查看的變量
其它:
Step into(Ctrl+N):單步調(diào)試,進(jìn)入下一步
Step over(Ctrl+O):結(jié)束該語句
Step out(Ctrl+T):跳出該過程
Run to next exception:進(jìn)入下一個斷點(diǎn)Breakpoint
Toggle Breakpoint設(shè)置斷點(diǎn):光標(biāo)指向一行,Ctrl+B;或鼠標(biāo)點(diǎn)中該行的行號邊緣
--引用自網(wǎng)頁鏈接