用户工具

站点工具


api_v2:easp.db.dosp



Easp.db.DoSP 方法

调用一个MSSQL存储过程并返回数据

语法

[[Set ]object = ]Easp.db.DoSP(spName:spType, spParams)

参数

object (可选)Variable (变量)
 返回值,可能是字符串、数组或者对象
spNameString (字符串)
 要调用的存储过程名称
spTypeInteger (整数) 或 String (字符串)
 要调用的存储过程的类型,可以是以下值:
 0 或者 省略 - 没有参数或者只有输入参数的存储过程
 1 或者 "OUT" - 带有输出参数的存储过程
 2 或者 "RS" - 没有输出参数且返回一个或多个记录集的存储过程
 3 或者 "ALL" - 既有输出参数又返回一个或多个记录集的存储过程
spParams"" (空字符串) 或 Array (数组)
 要传递给存储过程的输入或输出参数,如是数组应遵循"数组参数约定"(稍有不同,请看示例)。
 在数组中参数的名称中请遵循以下格式:
 输入参数 : @+参数名+冒号(:)+值
 输出参数 :@@+参数名
 注意:参数的顺序要同存储过程中的顺序完全一致

返回值

Array (数组)Numeric (数值)Object (ASP对象)String (字符串)视存储过程类型返回不同的值,可能是数值、字符串、数组或者对象,请看示例中的详细说明

注释

调用此方法将调用一个MS SQL Server的存储过程并可返回一个或多个记录集、输出参数或返回值。

示例

由于存储过程内容不同,返回数据的不同,输入输出参数要求的不同,所以从几种情况来看用此方法调用存储过程的过程和结果:
1、没有输入输出参数,不返回记录集的存储过程的调用(返回“存储过程返回值”):

Dim mySP
mySP = Easp.db.DoSP("myTestSP","")
Easp.w mySP '输出返回值
2、仅有输入参数,无输出参数,不返回记录集的存储过程的调用(返回“存储过程返回值”):
mySP = Easp.db.DoSP("myTestSP",Array("@param1:" & Value1, "@param2:" & Value2))
'或者用更简单的方式,只把值作为Array参数的项目即可(仅应用于这一种情况):
mySP = Easp.db.DoSP("myTestSP",Array(Value1,Value2))
Easp.w mySP '输出返回值
3、有或者没有输入参数,有输出参数,不返回记录集的存储过程的调用(返回Dictionary对象):
Set mySP = Easp.db.DoSP("myTestSP:1",Array("@inParam1:" & Vlaue1,"@inParam2:" & Value2, "@@outParam1", "@@outParam2"))
Easp.wn mySP("return") '输出返回值
Easp.wn mySP("@@outParam1") '输出指定的输出参数值
Easp.close(mySP)
4、有或者没有输入参数,无输出参数,只返回记录集的存储过程的调用(返回RecordSet记录集对象):
Set mySP = Easp.db.DoSP("myTestSP:2",Array("@param1:" & Value1, "@param2:" & Value2))
While Not mySP.Eof '输出记录集内容
    Easp.wn "ID:" & mySP(0)
    Easp.wn "Name:" & mySP(1)
    mySP.moveNext()
Wend
Easp.db.C(mySP)
5、有或者没有输入参数,有输出参数,也要返回记录集的存储过程的调用(返回Array数组):
mySP = Easp.db.DoSP("myTestSP:3",Array("@inParam1:" & Vlaue1,"@inParam2:" & Value2, "@@outParam1", "@@outParam2"))
'mySP返回的将是一个数组,第一个元素是记录集对象,第二个元素是参数和返回值
Dim rs : Set rs = mySP(0)
'这里可以操作rs记录集对象了
Easp.wn mySP(1)("return") '输出返回值
Easp.wn mySP(1)("@@outParam2") '输出指定参数值
再次提醒注意:参数的顺序要同存储过程中的顺序完全一致。但参数名没有强制要求要和存储过程中一样,只是为了代码便于阅读,建议你这么做(输出参数除外,因为这里需要两个@,存储过程中只需要一个@)。
另外,如果你要返回多个记录集对象,可以用这种方式来对获取的多个记录集进行操作:
Set rs = Easp.db.doSP("myTestSP:rs",Array("@param1:" & Value1, "@param2:" & Value2))
While Not rs.Eof '输出记录集内容
    Easp.wn "ID:" & rs(0)
    Easp.wn "Name:" & rs(1)
    Easp.wn "-----"
    rs.moveNext()
Wend
Easp.wn "==== Next Recordset ===="
Set rs = rs.NextRecordset() '获取下一个记录集
While Not rs.Eof
    Easp.wn "ProductID:" & rs(0)
    Easp.wn "Photo:" & rs(1)
    Easp.wn "-----"
    rs.moveNext()
Wend
Easp.db.C(rs)

api_v2/easp.db.dosp.txt · 最后更改: 2014/09/01 16:44 (外部编辑)