国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > Oracle > 正文

淺析Oracle和SqlServer存儲過程的調試、出錯處理

2024-08-29 13:46:33
字體:
來源:轉載
供稿:網友
  在大型數據庫中,因為開發的需要,經常地需要調用PRocedure,開發Procedure在Oracle和Sqlserver上因為語法不同,而有所區別,但是在調試上,都是比較的不輕易,尤其是在一些錯誤處理上。
  首先說調試:
  1。對于Oracle的調試,可以借助于第三方的工具,比如Pl/Sql Developer,我在用的版本是6.0.5.926;首先對該Procedure右鍵處理,添加“add debug information”,然后選擇“test”,打開新的測試窗口,在下方對應的輸入輸出變量地方,添加相應的測試數據,注重:這里的數據輸入,不需要引號,輸出參數不需要輸入然后點擊“start debugger”,或者按F9,進行測試,可以選擇測試的步驟如“step into”等,然后可以在下面的script窗口看到,中間變量;
  
  2。對于SqlServer調試,我還沒有找到比較好的第三方工具,目前是采用將中間的變量值或者sql語句插入到另一個表中,或者直接print出來的方式。第一種需要借助 exec('') 方法,注重里面的取變量值的寫法,可參考下面的例子:

exec('update SupplyplanLack set Completedate = GetDate()
from supplyPlanLack a where '+ @ssTmp +' and
'+@iCompleteQty+' >= (select s.RequestQty * a.RationQty as ReQQty
from Balance a, SupplyPlan s where a.Vehicle = s.Vehicle
and a.Part=s.Part and a.SupplyPlanNo = s.SupplyPlanNo
and '+ @ssTmp +')')
  在print中,需要注重類型的轉換,一般是借用 convert(varchar(11),@spNOTo) 方法來實現,否則會提示類型轉換錯誤!

  3。錯誤處理上,對于Sqlserver可以采用開始自定義變量,然后根據不同判定,改變該值然后推出的方法來處理,見下例

set @exec_num=0

if (@spNOFrom=0 or @spNOTo=0 or @reuseUser=NULL)
begin
set @exec_num=1
goto the_end
end

the_end:
return
  或者是這種:

set nocount on

if (@property is null) or (@property = '')
begin
raiserror('Must specify a property name.',-1,-1)
return (1)
end
  或者是對該錯誤全局變量 @@error 數值的判定上。




發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 衡阳县| 江口县| 云林县| 平定县| 伊金霍洛旗| 辰溪县| 文登市| 图木舒克市| 宝丰县| 资中县| 邹城市| 秭归县| 体育| 伊金霍洛旗| 宜兰县| 永川市| 黄梅县| 九寨沟县| 广灵县| 内黄县| 沧州市| 叙永县| 赤壁市| 镇坪县| 卢湾区| 蓝田县| 南汇区| 武宁县| 恩施市| 濮阳县| 响水县| 荥经县| 九江市| 曲周县| 叶城县| 衡阳市| 丹江口市| 巴塘县| 九龙坡区| 托里县| 诸暨市|