为什么我的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)

...全文
114 2 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
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

1,217

社区成员

发帖
与我相关
我的任务
社区描述
VB 数据库(包含打印,安装,报表)
社区管理员
  • 数据库(包含打印,安装,报表)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧