vb呼叫儲存過程的方法

ljm0211發表於2012-06-28
假設有一個名為doc_ProcName儲存過程,該儲存過程有一個輸入引數,一個輸出引數。

1) 直接傳遞引數呼叫儲存過程

直接傳遞引數方法主要透過以下幾個步驟來實現:

(1) 透過ADODB的Connection物件開啟與資料來源的連線;

(2) 透過ActiveConnection指定Command物件當前所屬的Connection物件;

(3) 透過CommandText屬性設定Command物件的源,即要呼叫的儲存過程;

(4) 透過CommandType屬性確定Command物件的源型別,如果源型別為儲存過程CommandType即為adCmdStoredProc;

(5) 透過Command物件的Parameters集合向所呼叫的儲存過程傳遞引數,其中物件Parameters(0)為執行儲存過程的返回值,返回值為0則執行儲存過程成功;

(6) 透過Eexecute方法執行在 CommandText 屬性中指定的儲存過程。

以儲存過程doc_ProcName為例,關鍵程式碼如下:

Dim strS As String '定義一變數
Dim adoconn As New ADODB.Connection 'Connection 物件代表了開啟與資料來源的連線。
Dim adocomm As New ADODB.Command 'Command 物件定義了將對資料來源執行的指定命令。
Dim ReturnValue As Integer '呼叫儲存過程的返回值
adoconn.ConnectionString = Adodc1.ConnectionString 'Adodc1為窗體中的ADO控制元件,並已成功連線資料庫
adoconn.Open
Set adocomm.ActiveConnection = adoconn '指示指定的 Command物件當前所屬的 Connection物件。
adocomm.CommandText = "doc_ProcName" '設定Command物件源。
adocomm.CommandType = adCmdStoredProc '通知提供者CommandText屬性有什麼,它可能包括Command物件的源型別。設定這個屬性最佳化了該命令的執行。
adocomm.Parameters(1) = "1"
adocomm.Parameters(2) = "OutputParameters" 'OutputParameters可以為任意的字串或數字
adocomm.Execute
ReturnValue = adocomm.Parameters(0) '儲存過程的返回值,返回0則成功執行。
strS = adocomm.Parameters(2) '把儲存過程的輸出引數的值賦給變數strS

2) 追加引數法呼叫儲存過程

追加引數透過CreateParameter方法,用來指定屬性建立新的Parameter物件。具體語法如下:

Set parameter = command.CreateParameter (Name, Type, Direction, Size, Value)

·Name 可選,字串,代表 Parameter 物件名稱。
·Type 可選,長整型值,指定 Parameter 物件資料型別。
·Direction 可選,長整型值,指定 Parameter 物件型別。
·Size 可選,長整型值,指定引數值最大長度(以字元或位元組數為單位)。
·Value 可選,變體型,指定 Parameter 物件值。

這種方法與上面一種方法的分別主要在於,追加引數的方法在向儲存過程傳遞引數時,這種方法首先透過CreateParameter方法為儲存過程建立引數,然後透過Append方法將建立的引數追加到Parameters集合中去。

仍然以儲存過程doc_ProcName的呼叫為例,關鍵程式碼如下:

Dim mRst As ADODB.Recordset 'Recordset 物件表示的是來自基本表或命令執行結果的記錄全集。
Dim prm As ADODB.Parameter 'Parameter 物件代表引數或與基於引數化查詢或儲存過程的Command 物件相關聯的引數。
adoconn.ConnectionString = Adodc1.ConnectionString
adoconn.Open
Set adocomm.ActiveConnection = adoconn
adocomm.CommandText = "doc_ProcName"
adocomm.CommandType = adCmdStoredProc
Set prm = adocomm.CreateParameter("parameter1", adTinyInt, adParamInput, , "1")
adocomm.Parameters.Append prm
Set prm = adocomm.CreateParameter("parameter2", adInteger, adParamOutput)
adocomm.Parameters.Append prm
Set mRst = adocomm.Execute
ReturnValue = adocomm.Parameters(0)

以上程式碼中未定義的變數以及未註釋的語句與前述相同。

結束語

在應用程式中呼叫伺服器端儲存過程,不僅能顯著提高整個應用的效能,而且能加強對資料庫資料的保護。VB為客戶端應用程式呼叫儲存過程提供了一組方便而有效的方法。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/11411056/viewspace-733997/,如需轉載,請註明出處,否則將追究法律責任。

相關文章