ado文檔對使用指定屬性建立新的 Parameter 對象。
文法
Set parameter = command.CreateParameter (Name, Type, Direction, Size, Value)
傳回值
返回 Parameter 對象。
參數
Name 可選,字串,代表 Parameter 對象名稱。
Type 可選,長整型值,指定 Parameter 對象資料類型。關於有效設定請參見 Type 屬性。
Direction 可選,長整型值,指定 Parameter 物件類型。關於有效設定請參見 Direction 屬性。
Size 可選,長整型值,指定參數值最大長度(以字元或位元組數為單位)。
Value 可選,變體型,指定 Parameter 對象的值。
說明
使用 CreateParameter 方法可用指定的名稱、類型、方向、大小和值建立新的 Parameter 對象。在參數中傳送的所有值都將寫入相應的 Parameter 屬性。
該方法無法自動將 Parameter 對象追加到 Command 對象的 Parameter 集合,這樣就可以設定附加屬性。如果將 Parameter 對象追加到集合,則 ADO 將使該附加屬性的值生效。
如果在 Type 參數中指定可變長度的資料類型,那麼在將它追加到 Parameters 集合之前必須傳送 Size 參數或者設定 Parameter 對象的 Size 屬性環裨蚪砦蟆?br>
================================================================================
參數值的類型的意義如下:
名稱值 整數值 功能
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 未編碼字串
方向值的意義如下:
名稱值 整數值 功能
adParamInput 1 允許資料輸入至該參數當中
adParamOutput 2 允許資料輸出至該參數當中
adParamInputOutput 3 允許資料輸入、輸出至該參數當中
adparamReturnValue 4 允許從一子程式中返回資料至該參數當中
更多詳細資源請參考Sql Server的文檔和IIS的文檔資源。
================================================================================
預存程序簡介:
為了提高Asp程式的效率,有時需要在Asp中使用使用Sql Server的儲存技術,下面簡單作一個介紹。
預存程序的建立
這裡只簡單介紹如何在Sql Server的企業管理器中如何建立預存程序:
(1)開啟企業管理器Enterprise manager
(2)選擇伺服器組(SQL Server Group)、伺服器、資料庫(Database)以及相就的資料庫,滑鼠右擊對應資料庫下的Stored Procdures項,在彈出的菜單中選擇New Stored Procedure,在Stored Procedures Properties中輸入建立預存程序的語句。下面是一個例子:
CREATE PROCEDURE proctest @mycola Char(10),@mycolb Char(10),@mycolc text AS
Insert into chatdata (mycola,mycolb,mycolc) values(@mycola,@mycolb,@mycolc)
在Sql Server的文檔中它的文法為:
CREATE PROC[EDURE] procedure_name [;number] [
{@parameter data_type} [VARYING] [= default] [OUTPUT] ]
[,...n] [WITH { RECOMPILE | ENCRYPTION
| RECOMPILE, ENCRYPTION } ] [FOR REPLICATION] AS
sql_statement [...n]
如果你對Sql文法不熟悉,可以使用Check Syntax來檢查文法。在上例中,表示建立預存程序名為mycola,帶3個參數的儲存過過程,其中第一個參數mycola資料類型為char,寬度10;第2個參數資料類型為char,寬度為10,第3個參數資料類型為text,在這裡使用的是Sql Server的資料類型。
預存程序建立後,下面就是如何在Asp程式中調用該預存程序:在Asp中調用預存程序 為了提高Asp程式的效率,有時需要在Asp中使用使用Sql Server的儲存技術,下面簡單作一個,在上面的增加參數的語句p.Append cm.CreateParameter("@mycolc",201,1,250)中,格式為:
p.Append cm.CreateParameter("參數名稱",類型,方向,大小)
================================================================================
asp的調用方法:
1 這也是最簡單的方法,兩個輸入參數,無傳回值:
set connection = server.createobject("adodb.connection")
connection.open someDSN
Connection.Execute "procname varvalue1, varvalue2"
'將所有對象清為nothing,釋放資源
connection.close
set connection = nothing
2 如果要返回 Recordset 集:
set connection = server.createobject("adodb.connection")
connection.open someDSN
set rs = server.createobject("adodb.recordset")
rs.Open "Exec procname varvalue1, varvalue2",connection
'將所有對象清為nothing,釋放資源
rs.close
connection.close
set rs = nothing
set connection = nothing
3 以上兩種方法都不能有傳回值,(Recordset除外),如果要得到傳回值,需要用Command的方法。
首先說明,傳回值有兩種。一種是在預存程序中直接return一個值,就象C和VB的函數傳回值那樣;
另一種是可以返回多個值,儲存這些值的變數名稱需要在調用參數中先行指定。
這個例子要處理多種參數,輸入參數,輸出參數,返回記錄集以及一個直接傳回值(夠全了吧?)
(見我寫的執行個體已經調試通過)執行個體:
'=====================================================
'功能:調用預存程序 刪除欄目
'返回:NO
'By king 2005-04-22
'=====================================================
Function Fun_delete_column(DelScope,Site_id,column_id)
' create proc pro_delte_column
'@Del_scope varchar(100) ,
'@Site_ID int ,
'@COLUMN_ID int,
'@back_message varchar(100) output
'建立資料庫連接
Set Comm=Server.CreateObject("ADODB.Command")
Comm.ActiveConnection=conn
'以comm對象建立預存程序串連,4代表連線類型為預存程序
Comm.CommandText="pro_delte_column"
Comm.CommandType=4
'以p1為名稱建立comm對象的parameter方法。將第一個參數fullname追加到p1集合中
Set p1=Comm.CreateParameter("@Del_scope",200,1,100,DelScope)
Comm.Parameters.Append p1
Set p1=Comm.CreateParameter("@Site_ID",3,1,,Site_ID)
Comm.Parameters.Append p1
Set p1=Comm.CreateParameter("@COLUMN_ID",3,1,,column_id)
Comm.Parameters.Append p1
'以p1為名稱建立comm對象的parameter方法。將第三個參數check追加到p1集合中
Set p1=Comm.CreateParameter("@back_message",200,2,100)
Comm.Parameters.Append p1
'運行預存程序
Comm.Execute
'提出結果,進行處理
if comm("@back_message")="Success" then
response.write "歡迎進入系統!"
else
'輸出值:
Response.Write "
@back_message = " & comm.Parameters("@back_message").Value & "
"
end if
'釋放串連
Set Comm=nothing