ASP调用sql server 存储过程详解-附带实例-
生活随笔
收集整理的這篇文章主要介紹了
ASP调用sql server 存储过程详解-附带实例-
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
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 "
? ? ?end if ?
? ? ?'釋放連接
? ? ?Set Comm=nothing??
語法
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??
轉載于:https://www.cnblogs.com/Nina-piaoye/archive/2006/09/18/507221.html
總結
以上是生活随笔為你收集整理的ASP调用sql server 存储过程详解-附带实例-的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Club Web Site-Custom
- 下一篇: 用页传值方式解决模态窗口的Respons