ASP中利用Command對象調用MSSQL預存程序屬性簡述
最後更新:2017-02-28
來源:互聯網
上載者:User
command|command對象|sql|預存程序 很多文章都介紹過,在ASP中調用MSSQL預存程序(Stored Procedure)的介紹。可以使用兩種方法:利用recordset對象,或者直接用command對象。
recordset對象相當簡單,熟悉Asp的都能上手操作,這裡簡單做個執行個體:
Mssql 中建立預存程序SP_UserList :
CREATE PROCEDURE SP_UserList
@Uid int
AS
select * from Users where Uid = @Uid
return
GO
在SQL Server中執行預存程序:
declare @Uid int
execute SP_UserList 1
使用recordset對象調用:
Uid = 1
set rs=server.createobject("adodb.recordset")
sql = "exec SP_UserList "&Uid&""
rs.open sql,conn,1,1
或者:
Uid = 1 '預存程序的輸入參數,為簡化程式, 直接設定該值
sql = "SP_UserList "&Uid&""
Set rs = Conn.Execute(sql) '或者Set rs = Conn.Execute("exec SP_UserList "&Uid&"")
如果改用command對象來調用預存程序,則必須先載入adovbs.inc檔案(檔案adovbs.inc可在C:\Program Files\Common Files\System\ADO下找到):
<!--必須載入adovbs.inc檔案,否則將出錯-->
<!--#include file="adovbs.inc"-->
'-----建立Connection對象----------
set Conn = Server.CreateObject("Adodb.connection")
Conn.Open "driver={sql server};server=localhost;uid=sa;pwd=;database=Mydbase;"
Uid = 1
'-----建立Command對象-----------
set Comm = server.createobject("adodb.command")
Comm.ActiveConnection = Conn
Comm.CommandText = "SP_UserList" '預存程序名稱,指定要執行的是一個預存程序
Comm.CommandType = 4 'adCmdStoredProc = 4 ,其為Stored Procedure
'-----準備 Stored Procedure 的參數-------
Comm.Parameters.Append Comm.CreateParameter("@Uid",adInteger,adParamInput,4,Uid) '命令格式Set parameter = command.CreateParameter (Name, Type, Direction, Size, Value)
'-----或者使用下列的方法定義 Stored Procedure 的參數:先建立輸入參數對象,然後把參數加到參數集合-------
'Set CommFirstParam = Comm.CreateParameter("@Uid",adInteger,adParamInput,4,Uid) '建立輸入參數對象
'Comm.Parameters.Append CommFirstParam '把參數加到參數集合
'-----執行預存程序----------------------
Comm.Execute
'-----下面輸出參數結果----------------------
response.write Comm.Parameters("@Uid")
最後關閉command對象:Set Comm = Nothing。如果準備 Stored Procedure 的參數中採用的是建立輸入參數對象的方法,則在最後還必須關閉對象:Set CommFirstParam = Nothing
再次提示一下,在使用command調對預存程序時,必須預先使用include載入adovbs.inc檔案,否則肯定出錯!!
下列是對Command對象中使用的各屬性的描述。
1、ActiveConnection 屬性:指示指定的 Command 或 Recordset 對象當前所屬的 Connection 對象。
2、CommandText 屬性:包含要根據提供者發送的命令的文本。設定或返回包含提供者命令(如 SOL 語句、表格名稱或儲存的程序呼叫)的字串值。預設值為 ""(零長度字串)。
3、CommandType 屬性:指示 Command 對象的類型。
設定和傳回值:
AdCmdText:將 CommandText 作為命令或預存程序調用的文本化定義進行計算。
AdCmdTable:將 CommandText 作為其列全部由內部產生的 SQL 查詢返回的表格的名稱進行計算。
AdCmdTableDirect:將 CommandText 作為其列全部返回的表格的名稱進行計算。
AdCmdStoredProc:將 CommandText 作為預存程序名進行計算。
AdCmdUnknown:預設值。CommandText 屬性中的命令類型未知。
adCmdFile:將 CommandText 作為持久 Recordset 檔案名稱進行計算。
AdExecuteNoRecords:指示 CommandText 為不返回行的命令或預存程序(例如,插入資料的命令)。如果檢索任意行,則將丟棄這些行且並不返回。它總是與 adCmdText 或 adCmdStoredProc 進行組合。
4、CreateParameter 屬性:使用指定屬性建立新的 Parameter 對象。返回 Parameter 對象。
文法:Set parameter = command.CreateParameter (Name, Type, Direction, Size, Value)
參數描述:
Name:可選,字串,代表 Parameter 對象名稱。
Type: 可選,長整型值,指定 Parameter 對象資料類型。關於有效設定請參見 Type 屬性。
Direction:可選,長整型值,指定 Parameter 物件類型。關於有效設定請參見 Direction 屬性。
Size:可選,長整型值,指定參數值最大長度(以字元或位元組數為單位)。
Value: 可選,變體型,指定 Parameter 對象的值。
在上例使用Command對象時,在“準備 Stored Procedure 的參數”中,我們還可以這樣實現:
Comm.Parameters.Append Comm.CreateParameter("Uid",adInteger,adParamInput,4)
Comm("Uid")=1
這樣我們在使用預存程序(Stored Procedure) 參數的時候,就可以使用三種方法來實現了。
在ASP中使用預存程序使用到的各個屬性我們就簡單介紹到這裡。在預存程序使用過程中,除了可傳遞輸入參數外,還可以使用返回碼和輸出參數傳回值,由於篇幅關係,筆者不再舉例,有興趣可去參考VB6.0的MSDN文檔中有關ADO的部分和SQL Server 2000的協助文檔。
附:預存程序的書寫格式
CREATE PROCEDURE [擁有者.]預存程序名[;程式編號]
[(參數#1,…參數#1024)]
[WITH
{RECOMPILE | ENCRYPTION | RECOMPILE, ENCRYPTION}
]
[FOR REPLICATION]
AS
程式行
Type 屬性
adDBTimeStamp 135 日期時間資料類型
adDecimal 14 十進位整數值
adDouble 5 雙精確度小數值
adError 10 系統錯誤資訊
adGUID 72 全域性唯一識別字(Globally unique identifier)
adDispath 9 COM/OLE自動對象(Automation Object)
adInteger 3 4位元組有符號整數
adIUnknown 13 COM/OLE對象
adLongVarBinary 205 大型2位元組值
adLongVarChar 201 大型字串值
adLongVarWChar 203 大型未編碼字串
adNumeric 131 十進位整數值
adSingle 4 單精確度浮點小數
adSmallInt 2 2位元組有符號整數
adTinyInt 16 1位元組有符號整數
adUnsignedBigInt 21 8位元組不帶正負號的整數
adUnsignedInt 19 4位元組不帶正負號的整數
adUnsignedSmallInt 18 2位元組不帶正負號的整數
adUnsignedTinyInt 17 1位元組不帶正負號的整數
adUserDefined 132 使用者自訂資料類型
adVariant 12 OLE對象
adVarBinary 204 雙位元組字元變數值
adVarChar 200 字元變數值
advarchar 202 未編碼字串變數值
adWchar 130 未編碼字串
Direction 屬性
名稱值 整數值 功能
adParamInput 1 允許資料輸入至該參數當中
adParamOutput 2 允許資料輸出至該參數當中
adParamInputOutput 3 允許資料輸入、輸出至該參數當中
adparamReturnValue 4 允許從一子程式中返回資料至該參數當中