• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
  • 淺析Oracle和SqlServer存儲過程的調試、出錯處理

    發表于:2007-07-13來源:作者:點擊數: 標簽:
    在大型數據庫中,因為 開發 的需要,經常地需要調用Procedure,開發Procedure在 Oracle 和Sqlserver上因為語法不同,而有所區別,但是在調試上,都是比較的不容易,尤其是在一些錯誤處理上。 首先說調試: 1、 對于Oracle的調試,可以借助于第三方的工具,比

    在大型數據庫中,因為開發的需要,經常地需要調用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 數值的判斷上。



      

    原文轉自:http://www.kjueaiud.com

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>