|
|
|
|
你现在的位置:您现在的位置是: 中国ASP>>数据库>>存储过程 |
|
| ASP中利用Command对象调用MSSQL存储过程属性简述 |
|
在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 程序行
|
|
|