文章詳情頁(yè)
關(guān)于Oracle和SQL存儲(chǔ)調(diào)試和出錯(cuò)處理
瀏覽:2日期:2023-11-13 18:04:03
在大型數(shù)據(jù)庫(kù)中,因?yàn)殚_(kāi)發(fā)的需要,經(jīng)常需要調(diào)用Procedure。在Oracle和SQLServer上開(kāi)發(fā)Procedure因?yàn)檎Z(yǔ)法不同,而有所區(qū)別;調(diào)試Procedure,在兩個(gè)系統(tǒng)上都不太輕易,尤其是進(jìn)行錯(cuò)誤處理時(shí)更是如此。 調(diào)試: 1. 對(duì)于Oracle的調(diào)試,可以借助于第三方的工具,比如Pl/SQL Developer,以6.0.5.926版本為例,首先對(duì)該P(yáng)rocedure右鍵處理,添加“add debug information”,然后選擇“test”,打開(kāi)新的測(cè)試窗口,在下方對(duì)應(yīng)的輸入輸出變量處,添加相應(yīng)的測(cè)試數(shù)據(jù)。注重:這里的數(shù)據(jù)輸入,不需要引號(hào),輸出參數(shù)不需要輸入! 然后點(diǎn)擊“start debugger”,或者按F9進(jìn)行測(cè)試,可以選擇測(cè)試的步驟如“step into”等,然后可以在下面的script窗口看到中間變量。 2. 對(duì)于SQLServer調(diào)試,在沒(méi)有找到較好的第三方工具的情況下,目前采用的是將中間的變量值或者SQL語(yǔ)句插入到另一個(gè)表中,或者直接print出來(lái)的方式。第一種需要借助 exec('') 方法,注重里面的取變量值的寫法,可參考下面的例子: exec('update SupplyplanLack set Completedate = GetDate()from supplyPlanLack a where '+ @ssTmp +' and'+@iCompleteQty+' >= (select s.RequestQty * a.RationQty as ReQQtyfrom Balance a, SupplyPlan s where a.Vehicle = s.Vehicleand a.Part=s.Part and a.SupplyPlanNo = s.SupplyPlanNoand '+ @ssTmp +')')在print中,需要注重類型的轉(zhuǎn)換,一般是借用 convert(varchar(11),@spNOTo) 方法來(lái)實(shí)現(xiàn),否則會(huì)提示類型轉(zhuǎn)換錯(cuò)誤。 3. 錯(cuò)誤處理上,對(duì)于SQLServer可以采用開(kāi)始自定義變量,然后根據(jù)不同判定,改變?cè)撝翟偻瞥龅姆椒▉?lái)處理,見(jiàn)下例: set @exec_num=0if (@spNOFrom=0 or @spNOTo=0 or @reuseUser=NULL)beginset @exec_num=1goto the_endendthe_end:return或者是這種: set nocount onif (@property is null) or (@property = '')beginraiserror('Must specify a property name.',-1,-1)return (1)end或者是對(duì)該錯(cuò)誤全局變量 @@error 數(shù)值的判定上。
標(biāo)簽:
Oracle
數(shù)據(jù)庫(kù)
排行榜
