2013年12月10日 星期二

T-SQL Database Debug 除錯的基本操作

Web的開發,都會採用MVC的結構。在MVC的結構,模組程式圖像的分離,以Java來說,在最初的JSP網頁中,像資料庫查詢語句這樣的資料層代碼和像HTML這樣的表示層代碼混在一起。經驗比較豐富的開發者會將資料從表示層分離開來,但這通常不是很容易做到的,它需要精心地計劃和不斷的嘗試。MVC從根本上強制性地將它們分開。所以MVC的誕生,讓T-SQL不用嵌在頁面之中,讓網頁只做網頁的工作,資料庫的事就交給資料庫,所以會慢慢走向Store Procedure、View…,頁面裡只有留下「Store Procedure Name / View Name」及「傳遞的參數」等就好。但寫Store Procedure或View…等是在SSMS工具裡執行,所以我們要了解SSMS裡的T-SQL偵錯工具。

其實SSMS的偵錯工具很簡單,如果你使用過Visual Studio開發工具,那差不多是一個樣子,設「中斷點」然後執行「偵錯」,我們先寫一段簡單的T-SQL程式:


declare @v1 int=1
declare @v2 int
select @v2=MAX(bookId)
 from MyBook.dbo.Books

while (@v1 <= @v2)
begin
select * from MyBook.dbo.Books where bookId = @v1
set @v1 += 2
end;

設好中斷點,按下「Debug」,,此時T-SQL會步步的執行,透過「偵錯工具」可以控制T-SQL的執行流程。





「Locals」可以看到我們變數的變化。如下圖:


「呼叫堆疊」會顯示目前的執行位置、中斷點的管理,輸出是顯示各種訊息。接下來的操作大多是在「Debug」及查看「Locals」的變化。如下圖:



黃色箭頭之下各代表「Step Into」、「Step Over」、「Step Out」,如果你非常確定函式不會出錯,那就可以使用「Step Over」、「Step Out」來加速偵錯程序,我們按一次「Step Into」後來看結果:



如此一來,變數v1就可以看到value裡的值,對於開發DB的開發者而言,透過Debug的除錯,就能更了解每一行執行出來的結果。

-雲遊山水為知已逍遙一生而忘齡- 電腦神手

沒有留言:

張貼留言