为什么我的VB程序调用SQL SERVER 2000 的存储过程不能返回定义的输出参数

comefirst001 2003-02-28 02:22:22
以下存储过程在查询器中可以返回正确值,担在我的VB程序中返回都是"0".请大虾指正,或给一段可以正确执行的源码。


例程:
存储过程:

CREATE procedure Procdcwquer @Code varchar(8),@PositionNo int output, @Sum float output as
declare @GoodsCode varchar(8)
select t_cwb.c_cwh as 仓位号, c_cwmc as 仓位名称, f_dqkcsl as 库存数量
from t_cwb join t_dcwb on t_cwb.c_cwh = t_dcwb.c_cwh
where c_spbm = @code
select @PositionNo = count(*) , @sum =sum(f_dqkcsl) from t_dcwb
where c_spbm =@code
group by c_spbm
GO






VB程序:

dim intPositionNo as integer
dim sigSum as single
Set objCnn = New ADODB.Connection
Set objCmd = New ADODB.Command
Set objRst = New ADODB.Recordset

Set objParmIn = objCmd.CreateParameter(, adVarChar, adParamInput,8,strCode)
objCmd.Parameters.Append objParmIn
Set objParmOutPositionNo = objCmd.CreateParameter("intPositionNo", adInteger, adParamOutput, 3)
objCmd.Parameters.Append objParmOutPositionNo
Set objParmOutSum = objCmd.CreateParameter("sigSum", adSingle, adParamOutput, 8)
objCmd.Parameters.Append objParmOutSum
objCnn.Open g_strHeadquarterCnn
objCmd.ActiveConnection = objCnn
objCmd.CommandType = adCmdStoredProc
objCmd.CommandText = "procdcwquer"
Set objRst = objCmd.Execute
intPositionNo = objCmd("intPositionNo")
sigSum = objCmd("sigSum")
MsgBox Str(intPositionNo) & str(sigSum)

...全文
40 点赞 收藏 2
写回复
2 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
comefirst001 2003-03-05
谢谢,我弄明白了,我的存储过程既返回记录集,又要得到输出参数。当返回记录集时
(set objRecordset = objCommand.execute)就得不到输出参数,除非再执行一次命令。
(objCommand.execute)

回复
fling_boy 2003-02-28
cmd使用.Parameters.Refresh时会自动取到参数,而且参数有@,你自己创建的可能不起作用吧。
下面的可以正确返回,你试着改一下.

With DBCommand
Set .ActiveConnection = DBConnect
.CommandType = adCmdStoredProc
.CommandText = "GetFullPath"
.Parameters.Refresh
.Parameters("@Id").Value = 1
.Execute
FullPath = .Parameters("@FullPath").Value
End With
回复
相关推荐
发帖

1187

社区成员

VB 数据库(包含打印,安装,报表)
申请成为版主
帖子事件
创建了帖子
2003-02-28 02:22
社区公告
暂无公告