學(xué)習(xí)使用存儲過程(Stored Procedure),是ASP程序員的必須課之一。所有的大型數(shù)據(jù)庫都支持存儲過程,比如Oracle、MS SQL等,(但MS Access不支持,不過,在Access里可以使用參數(shù)化的查詢)。 使用存儲過程有許多好處,它可以封裝復(fù)雜的數(shù)據(jù)邏輯,充分發(fā)揮大型數(shù)據(jù)庫本身的優(yōu)勢。我們知道,ASP并不適合做復(fù)雜的數(shù)據(jù)運(yùn)算,而通過OLD DB訪問數(shù)據(jù)庫,由于數(shù)據(jù)需要在ASP和數(shù)據(jù)庫之間傳遞,相當(dāng)消耗系統(tǒng)資源。事實上,如果數(shù)據(jù)庫僅僅起著數(shù)據(jù)存儲的作用,那么它的功能是遠(yuǎn)遠(yuǎn)沒有得到利用的。 關(guān)于如何創(chuàng)建存儲過程,請參考MS SQL的相關(guān)文檔。 本文介紹存儲過程如何在ASP中運(yùn)用。 簡單的一個SQL語句: select ID,Name,Picture,Time,Duty from employ 我們可以創(chuàng)建一個存儲過程: CREATE PROCEDURE sp_employ AS select ID,Name,Picture,Time,Duty from employ Go 而SQL語句: select ID,Name,Picture,Time,Duty from employ where ID=10230 對應(yīng)的存儲過程是:(用Alter替換我們已有的存儲過程) ALTER PROCEDURE sp_employ @inID int AS select ID,Name,Picture,Time,Duty from employ where ID=@inID Go 下面對比一下SQL和存儲過程在ASP中的情況。首先看看直接執(zhí)行SQL的情況: <% dim Conn, strSQL, rs set Conn = Server.CreateObject("ADODB.Connection") Conn.Open "DSN=webData;uid=user;pwd=password" strSQL = " select ID,Name,Picture,Time,Duty from employ " Set rs = Conn.Execute(strSQL) %>
再看看如何執(zhí)行Stored Procedure: <% dim Conn, strSQL, rs set Conn = Server.CreateObject("ADODB.Connection") Conn.Open "DSN=webData;uid=user;pwd=password" ’make connection strSQL = "sp_employ" Set rs = Conn.Execute(strSQL) %>
而執(zhí)行帶參數(shù)的Stored Procedure也是相當(dāng)類似的: <% dim Conn, strSQL, rs, myInt myInt = 1 set Conn = Server.CreateObject("ADODB.Connection") Conn.Open "DSN=webData;uid=user;pwd=password" strSQL = "sp_myStoredProcedure " & myInt Set rs = Conn.Execute(strSQL) %>
你可能覺得在ASP中使用存儲過程原來是這樣的簡單。對!就是這么簡單。
|