熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Oracle >> 正文

Oracle和SQL Server存儲調試和出錯處理

2013-11-13 16:17:58  來源: Oracle 

  在大型數據庫中因為開發的需要經常需要調用Procedure在Oracle和SQLServer上開發Procedure因為語法不同而有所區別調試Procedure在兩個系統上都不太容易尤其是進行錯誤處理時更是如此
  
  首先說調試
  
   對於Oracle的調試可以借助於第三方的工具比如Pl/SQL Developer版本為例首先對該Procedure右鍵處理添加add debug information然後選擇test打開新的測試窗口在下方對應的輸入輸出變量處添加相應的測試數據注意這裡的數據輸入不需要引號輸出參數不需要輸入!
  
  然後點擊start debugger或者按F進行測試可以選擇測試的步驟如step into然後可以在下面的script窗口看到中間變量
  
   對於SQLServer調試在沒有找到較好的第三方工具的情況下目前采用的是將中間的變量值或者SQL語句插入到另一個表中或者直接print出來的方式第一種需要借助 exec() 方法注意裡面的取變量值的寫法可參考下面的例子
  
  exec(update SupplyplanLack set Completedate = GetDate()
  from supplyPlanLack a where + @ssTmp + and
  +@iCompleteQty+ >= (select sRequestQty * aRationQty as ReqQty
  from Balance a SupplyPlan s where aVehicle = sVehicle
  and aPart=sPart and aSupplyPlanNo = sSupplyPlanNo
  and + @ssTmp +))
  
  在print中需要注意類型的轉換一般是借用 convert(varchar()@spNOTo) 方法來實現否則會提示類型轉換錯誤
  
   錯誤處理上對於SQLServer可以采用開始自定義變量然後根據不同判斷改變該值再推出的方法來處理見下例
  
  set @exec_num=
  if (@spNOFrom= or @spNOTo= or @reuseUser=NULL)
  begin
  set @exec_num=
  goto the_end
  end
  the_end:
  return
  
  或者是這種
  
  set nocount on
  if (@property is null) or (@property = )
  begin
  raiserror(Must specify a property name)
  return ()
  end
  
  或者是對該錯誤全局變量 @@error 數值的判斷上
From:http://tw.wingwit.com/Article/program/Oracle/201311/18100.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.