建立Stored Procedure

在這一節中,您可以瞭解如何在SQL資料庫中透過建立、執行和偵錯Stored Procedure來達到Procedural Data Integrity。首先您要先瞭解如何利用Visual BasicData View增益功能來為資料庫建立新的Stored Procedure;接著您會學到撰寫帶參數的Stored Procedure,用以傳入參數和傳回參數給原呼叫程式;最後,您會學到如何在Visual Basic中利用T-SQL Debugger對一個Stored Procedure進行偵錯。

Data View建立Stored Procedure

如果您在Visual Basic專案上加入一個Data Environment,並和SQL Server建立資料庫連結,那麼您便可以透過Data View視窗來建立一個Stored Procedure

4利用Data View來建立一個新的Stored Procedure

  1. Data View視窗中,在 Stored Procedure 目錄上按下滑鼠右鍵,然後選取 New 
  2. New Stored Procedure視窗中,建立一個Stored Procedure並指定一個名稱。
  3. Data View便會建立一個包含 Create Procedure Stored Procedure範本,依需要加入適當的參數或者是加入 Select 指令到Stored Procedure
  4. New Stored Procedure視窗按右鍵,儲存這個Stored Procedure
  5. 關閉New Stored Procedure視窗。

Create Procedure陳述式

Stored Procedure是透過Create Procedure陳述式建立的,其語法為:

CREATE PROCEDURE [owner.]procedure_name[;number]

[(parameter1 [, parameter2]...[parameter255])]

[{FOR REPLICATION} | {WITH RECOMPILE}

[{[WITH] | [,]} ENCRYPTION]]

AS sql_statements

 

以下便是Stored Procedure常用的參數:

參數

說明

procedure_name

Stored Procedure指定一個新的名稱,名稱必須是在這個資料庫和擁有者下唯一的名稱,而且名稱總長度不可以超過20個字元。

parameter

指定Stored Procedure中的參數,您可以在Create Procedure敘述當中宣告一或多個參數。使用者必須在Stored Procedure執行時提供每一個參數的數值(除非這些參數有預設值)。一個Stored Procedure最多可以有255個參數。

sql_statements

指示這一個Stored Procedure所要進行的動作。

如果想要進一步瞭解Create Procedure語法中其他參數的意義,您可以在Visual Basic輔助說明中以Create Procedure statement為關鍵字搜尋相關資訊。

以下的範例會建立一個名為count_loanhistStored Procedure

CREATE PROC count_loanhist

        AS

        SELECT COUNT(*) FROM loanhist

注意Create Procedure不可以和其他SQL陳述式存在於同一個batch中。

Stored Procedure加入參數

使用者可以透過參數傳遞資訊給Stored Procedure,您當然也可以藉由參數讓Stored Procedure執行完畢之後,傳回資訊給使用者。

 

您對每一個Stored Procedure最多可以宣告255個參數,每一個參數定義的語法如下:

parameter = @parameter_name datatype [=default][Output]

下表說明定義一個參數時,參數定義的語法裡所使用的引數:

引數

說明

parameter_name

指定參數的名稱,不過在名稱的前頭要加入@符號。

datatype

指定參數的資料型別,除了Image之外所有型別都可以使用。

default

指定參數的預設值,假如有設定預設值的話,使用者可以不需要輸入數值給參數便可以執行Stored Procedure

 Output 

表示這一個參數是一個傳回資訊的參數。這個選項可以讓這個參數值傳回給呼叫Stored Procedure Execute 陳述式。將傳回資訊透過這一個參數送回給原呼叫程序。

以下便是一個建立一個名為mathtutorStored Procedure的範例程式,這一個Stored Procedure的功能是計算兩個輸入參數@m1@m2的乘積,此外這兩個參數的資料型別設定為smallint,而Output參數@result則會傳回計算後的結果。

 

CREATE PROCEDURE mathtutor

        @m1 smallint,

        @m2 smallint,

        @result smallint OUTPUT

AS

SELECT @result = @m1 * @m2

下列程式碼是定義一個名為 Customer_ListByLastName Stored Procedure,但是此Procedure是傳回一整組資料而不是單一的 Output 參數。

CREATE PROCEDURE Customer_ListByLastName

  @vLastName varchar(30)

AS

BEGIN

DECLARE @vLast varchar(31)

SELECT @vLast = @vLastName + '%'

SELECT Lastname + ', ' + FirstName as FullName,

LastName, FirstName, Address, City, State, PostalCode, Country,

PhoneNumber, Balance, Email, CustomerID from Customers

WHERE LastName LIKE @vLast ORDER BY FULLNAME

END

@vLast參數是由輸入參數@vLastName加上萬用字元「%」,而查詢結果是利用SELECT指令在WHERE敘述當中以@vLast為條件搜尋LastName得來的結果。

注意Declare可以在您的SQL程式碼中定義一個變數 

 

Stored Procedure進行偵錯

當您在安裝Visual Basic時,Visual Basic T-SQL Debugger便會自動地安裝在企業版工具裡。透過Visual Basic T-SQL Debugger,您可以在Visual Basic發展環境中直接對撰寫在SQL內的Stored Procedure進行偵錯。

4Visual Basic中使用T-SQL Debugger

  1.  Add-Ins 功能表中選取 Add-In Manager 
  2. 在可以選取的增益功能當中,點選 VB T-SQL Debugger ,並按下 OK 按鈕。
  3. 選取 Load/Unload 核取方塊,把T-SQL Debugger加入 Add-Ins 功能表中。
  4.  Add-Ins 功能表中選取 T-SQL Debugger ,這時 Visual Basic Batch T-SQL Debugger 對話方塊便會出現。
  5.  Settings 頁籤中,要填完連結所需的設定,以便連結Stored Procedure所在的SQL Server資料庫。
  6.  Stored Procedure 頁籤中,選取您想要偵錯的Stored Procedure,假如需要參數的話,請分別對每一個參數填入數值。
  7. 按下 Execute 按鈕,此時T-SQL Debugger便會出現。

您也可以利用下列的方法來啟動T-SQL Debugger

  • 利用Data Environment Designer
  • Data View視窗中對某一個Stored Procedure按下滑鼠右鍵,並在快顯功能表中選取 Debug 指令。
  • 利用UserConnection Designer

透過T-SQL Debugger,您可以:

  • 顯示SQL呼叫堆疊(stack)、區域變數和Stored Procedure中的參數。
  • 控制和管理Breakpoint
  • 檢視區域變數和參數。
  • 檢視全域變數。

Visual Basic程式碼進行偵錯時,您同時可以用T-SQL Debugger作執行時期的偵錯。若是要設定T-SQL Debugger作執行時期的偵錯,您可以在 Tools 功能表中選取 T-SQL Debugging Options ,接著選取 自動地透過RDO and ADO連線  逐步追蹤至預存程序中 核取方塊。當您逐步追蹤至任何執行Stored ProcedureADO程式碼時,便可以利用T-SQL Debugger進入Stored Procedure內進行偵錯。

注意:若是以SystemAccount的身份登入SQL ServerT-SQL Debugger無法運作。要修改此一選項,可以從Control Panel Services 中,按兩下 MSSQLServer 服務。假如這一項服務是以 SystemAccount 執行的話,那請變更為另一個可以登入伺服器的使用者名稱 

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 snowman 的頭像
    snowman

    snowman的部落格

    snowman 發表在 痞客邦 留言(0) 人氣()