[返回首页] - [索引页面] - [文章列表]

 

主题:存储过程返回值 高分相送



一个价格表 mis_roomtype_price
字段 start_time end_time price_a price_c price_d content
属性 datetime datetime int int int nvarchar
现创建了一个存储过程
-----过程开始-----
CREATE Proc mis_search
@begin datetime,
@end datetime

as
select start_time,
end_time= (select isnull(min(start_time),a.end_time)
from mis_roomtype_price where start_time>a.start_time),
price_a,price_b,price_c,bb=identity(int,1,1) into #b
from mis_roomtype_price a where end_time>=@begin and start_time<=@end
select *,bb=identity(int,1,1) into #c from mis_roomtype_price where end_time>=@begin and start_time<=@end
------------------------------------------
delete from #b where end_time<@begin
update #b set start_time=(case when start_time<@begin then @begin else start_time end) where bb in(select min(bb) from #b)
update #b set end_time=case when #b.end_time>#c.End_time then #c.end_time else #b.end_time end
from #b inner join #c on #b.bb=#c.bb
----------------------------
update #b set start_time=a.end_time from #b inner join #b a on(#b.bb=a.bb+1)
select start_time,end_time,price_a,price_b,price_c from #b
--------------------------过程结束--------------------------
我想取得price_a price_b的值,如果做? 刚接触.多谢帮忙
提供一个例子,如下
<%@ Language=VBScript %>
<%
Dim CmdSP
Dim adoRS
Dim adCmdSPStoredProc
Dim adParamReturnValue
Dim adParaminput
Dim adParamOutput
Dim adInteger
Dim iVal
Dim oVal
Dim adoField
Dim adVarChar

'这些值在 VB 中是预定义常量,可以直接调用,但在 VBScript 中没有预定义
adCmdSPStoredProc = 4
adParamReturnValue = 4
adParaminput = 1
adParamOutput = 2
adInteger = 3
adVarChar = 200

iVal = 5
oVal = 3

'建一个command对象
set CmdSP = Server.CreateObject("ADODB.Command")

'建立连结
CmdSP.ActiveConnection = "Driver={SQL Server};server=hrc-john;Uid=sa;Pwd=hrc;Database=hrc-mis"

'定义command 对象调用名称
CmdSP.CommandText = "mis_search"

'设置command调用类型是存储过程 (adCmdSPStoredProc = 4)
CmdSP.CommandType = adCmdSPStoredProc

'往command 对象中加参数
'定义存储过程有直接返回值,并且是个整数,省缺值是4
'CmdSP.Parameters.Append CmdSP.CreateParameter("RETURN_VALUE", adInteger, adParamReturnValue, 4)
'定义一个字符型输入参数
CmdSP.Parameters.Append CmdSP.CreateParameter("@end", adVarChar, adParaminput, 20, "M")
'定义一个整型输入参数
'CmdSP.Parameters.Append CmdSP.CreateParameter("@intID", adInteger, adParamInput, , iVal)
'定义一个整型输出参数
'CmdSP.Parameters.Append CmdSP.CreateParameter("@intIDOut", adInteger, adParamOutput, oVal)

'运行存储过程,并得到返回记录集
Set adoRS = CmdSP.Execute


'把每个记录打印出来,其中的字段是虚拟的,可以不用管
While Not adoRS.EOF

for each adoField in adoRS.Fields
Response.Write adoField.Name & "=" & adoField.Value & "<br/>" & vbCRLF
Next
Response.Write "<br/>"
adoRS.MoveNext
Wend

'打印两个输出值:
'Response.Write "<p>@intIDOut = “ & CmdSP.Parameters("@end").Value & "</p>"
Response.Write "<p>Return value = " & CmdSP.Parameters("RETURN_VALUE").Value & "</p>"

Set adoRS = nothing
Set CmdSP.ActiveConnection = nothing
Set CmdSP = nothing
%>


回复人:mymyal123(风之森)  五级(中级)  信誉:100      2005-3-11 11:15:05  得分:50

xx = cmd.Parameters("@intIDOut").value

得到返回值
TOP
回复人:fcuandy(www.webizs.com)  四级(中级)  信誉:99      2005-3-11 11:15:31  得分:0

"我想取得price_a price_b的值",不知道你取的这个值要有什么条件? 是做为记录集输出,还是用out参数输出?
TOP
回复人:mymyal123(风之森)  五级(中级)  信誉:100      2005-3-11 11:17:20  得分:0

只能取得你以adParamOutput 指定的值
TOP
回复人:fcuandy(www.webizs.com)  四级(中级)  信誉:99      2005-3-11 11:18:17  得分:0

存储过程都没定义好,参数怎么取得出来?
TOP
回复人:mymyal123(风之森)  五级(中级)  信誉:100      2005-3-11 11:19:21  得分:0

xx = CmdSP.Parameters("@intIDOut").value
TOP
回复人:yyq136(~加紧学习~)  四级(中级)  信誉:98      2005-3-11 11:24:29  得分:0

price_a price_b并没有定义输出啊。怎么取出来啊
TOP
回复人:fcuandy(www.webizs.com)  四级(中级)  信誉:99      2005-3-11 11:25:11  得分:0

我无语了.... 楼上朋友,我明白你的意思, 但你可能没明白我的意思. 我一开始就是在问楼主..
TOP
回复人:potter2002(自由鸟)  一级(初级)  信誉:100      2005-3-11 11:27:37  得分:0

to fcuandy(fcuandy):用作记录,因为要在页面显示出来
或者存储过程如何修改。我在sql查询分析器测试中得到的数据完全合我意。
但之前都没有接触过这个东东,现在正在看相关资料。希望各位能帮帮忙,如果能直接帮我修改就非常感谢了
TOP
回复人:fcuandy(www.webizs.com)  四级(中级)  信誉:99      2005-3-11 11:33:18  得分:0

如果按记录集输出,你的存储过程中已经有了.你在asp代码中生成的记录集中已有这两个字段存在了
如果按参数输出,增加二个输出参数就可以了
TOP
回复人:mymyal123(风之森)  五级(中级)  信誉:100      2005-3-11 11:34:36  得分:0

楼主,你的存储过程是有问题,连输入,输出参数都没定义
还是去SQL版找找资料吧.

调用我想你应该没有问题了吧
TOP
回复人:potter2002(自由鸟)  一级(初级)  信誉:100      2005-3-11 11:40:27  得分:0

现在问题是我不知道如何输出我的变量,调用刚学会
好烦
TOP
回复人:fcuandy(www.webizs.com)  四级(中级)  信誉:99      2005-3-11 12:01:32  得分:50

在过程里增加输出参数

CREATE Proc mis_search
(@begin datetime, --这是一个输入参数
@end datetime, --这也是输入参数
@price_a as smallmoney=null output --这里定义了一个输出参数)
as
select @price_a=price_a from table where ......

这时在asp程序后就可以用风之森的方法取得@price参数值了. 不过注意在给cmd增加参数时CreateParameter方法需要的参数不要写错了

TOP
回复人:mymyal123(风之森)  五级(中级)  信誉:100      2005-3-11 12:12:53  得分:0

你存储过程中都没有返回值,怎么得到返回变量啊?
TOP
回复人:fcuandy(www.webizs.com)  四级(中级)  信誉:99      2005-3-11 12:28:46  得分:0

@price_a as smallmoney=null output

当然,我理解的楼主的price_a字段是smallmoney类型,就这样写了,如果是int或float或money就改成那种类型就行了.
TOP
回复人:potter2002(自由鸟)  一级(初级)  信誉:100      2005-3-11 12:32:38  得分:0

明白,先谢过。。。忙其它的先,下午回来测试
thank you very much
TOP


该问题已经结贴 ,得分记录:mymyal123(50)、fcuandy(50)、