wwww.iTbulo.combJJXD
然後在 Access 主界面上點擊左側的“查詢”按鈕,再在右邊雙擊“在設計視圖中創建查詢”,以打開查詢設計視圖。
wwww.iTbulo.combJJXD
wwww.iTbulo.combJJXD
這時彈出的是可視化的查詢生成器,我們首先添加 SQL 語句需要涉及的表。
wwww.iTbulo.combJJXD
wwww.iTbulo.combJJXD
添加表之後,在設計視圖上點擊鼠標右鍵,選擇“SQL 視圖”,以切換到 SQL 代碼編輯窗口。
wwww.iTbulo.combJJXD
wwww.iTbulo.combJJXD
好,下面說說 Access 的存儲過程的特點。
Access 的查詢,我目前的感覺是對 SQL 語句的一個包裝,或許進行了某種優化如預編譯。我們不能像寫 SQL Server 存儲過程那樣使用多重操作,事務,邏輯判斷,循環等等……
wwww.iTbulo.combJJXD
這裡還要說明 Access 存儲過程中參數的使用。和 SQL Server 的存儲過程中用 @ 變量指定參數,然後同名傳入參數對象不同,Access 中的參數,是以“順序”而非“名字”來識別的。傳入的參數無需指定名字,隨便起,SQL 中的參數名字也可以隨便起,只要傳入參數值時,按照 SQL 語句中的參數出現順序指定就行了。通常,我們使用 Command 對象的 Execute 方法,直接傳入參數值數組來執行~
代碼:
--------------------------------------------------------------------------------
cmd.Execute , Array(userName)
--------------------------------------------------------------------------------
再比如,你的一個 Access 存儲過程這麼寫:
代碼:
--------------------------------------------------------------------------------
select * from Users where UserName = p_UserName and BookTitle = p_bookTitle
--------------------------------------------------------------------------------
你可以就這麼執行,通過傳入參數值數組,但是順序要對應:
代碼:
--------------------------------------------------------------------------------
cmd.Execute , Array(userName, bookTitle)
--------------------------------------------------------------------------------
OK,看看我們的例子中使用的兩個查詢,一個是寫入數據。寫好 SQL 語句後存並命名。
wwww.iTbulo.combJJXD
wwww.iTbulo.combJJXD
另一個讀取數據的存儲過程代碼。
wwww.iTbulo.combJJXD
wwww.iTbulo.combJJXD
然後我們可以在 ASP 程序中調用這些存儲過程了。
這裡可以看到為什麼我說 Access 中的查詢就是它的存儲過程——我們的 Command 對象的 CommandType 屬性設置的是 4,即 Stored Proc!
so...
以下的代碼很簡單:
代碼:
--------------------------------------------------------------------------------
wwww.iTbulo.combJJXD
<%
Option Explicitwwww.iTbulo.combJJXD
wwww.iTbulo.combJJXD
Dim s
Randomize
s = Rnd * 100wwww.iTbulo.combJJXD
wwww.iTbulo.combJJXD
Dim conn, cmd
Set conn = Server.CreateObject("ADODB.Connection")
Set cmd = Server.CreateObject("ADODB.Command")wwww.iTbulo.combJJXD
wwww.iTbulo.combJJXD
conn.Open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & Server.MapPath("sp.mdb")wwww.iTbulo.combJJXD
wwww.iTbulo.combJJXD
With cmd
.ActiveConnection = conn
.CommandType = &H0004 '存儲過程
.CommandText = "AddNewData"
End Withwwww.iTbulo.combJJXD
wwww.iTbulo.combJJXD
cmd.Execute , Array(CStr(Now()), CSng(s))wwww.iTbulo.combJJXD
wwww.iTbulo.combJJXD
With cmd
.ActiveConnection = conn
.CommandType = &H0004 '存儲過程
.CommandText = "GetData"
End Withwwww.iTbulo.combJJXD
wwww.iTbulo.combJJXD
Dim resultRS, resultArray
Set resultRS = cmd.Execute(, Null)wwww.iTbulo.combJJXD
wwww.iTbulo.combJJXD
If Not resultRS.EOF Then
resultArray = resultRS.GetRows()
End Ifwwww.iTbulo.combJJXD
wwww.iTbulo.combJJXD
Set resultRS = Nothing
Set cmd = Nothing
conn.Close
Set conn = Nothingwwww.iTbulo.combJJXD
wwww.iTbulo.combJJXD
Response.Write "<ul>"
Dim i
For i = 0 To UBound(resultArray, 2)
Response.Write "<li>" & resultArray(0, i)
Response.Write " " & resultArray(1, i)
Response.Write " " & resultArray(2, i)
Response.Write "</li>"
Next
Response.Write "</ul>"
%>wwww.iTbulo.combJJXD
--------------------------------------------------------------------------------
運行結果。
wwww.iTbulo.combJJXD
wwww.iTbulo.combJJXD
感覺起來,速度似乎很快,呵呵~
不知道這樣在 Access 中使用存儲過程的意義大不大,不過確實很好玩
wwww