我在一个存储过程中用到了OUTPUT参数来返回值,值是不知怎样在VB中得到这个返回值....
下面一本书上的一个类似的例子,结果返回为空....不知为什么???
想问样才能在VB中获得OUTPUT参数返回的值啊???存储过程:
CREATE PROCEDURE myproc @ioparm int OUTPUT AS
select * from usertb
select @ioparm=1
return 100
GOVB中调用:
Dim adocmd As New ADODB.Command
Dim adors As New ADODB.Recordset
Dim param As Parameter
adocmd.ActiveConnection = "DSN=bnkio;UID=whabbit;PWD=1010"
adocmd.CommandText = "myproc"
adocmd.CommandType = adCmdStoredProc
Set param = adocmd.CreateParameter("Retrun", adInteger, adParamReturnValue, , 0)
adocmd.Parameters.Append param
Set param = adocmd.CreateParameter("Output", adInteger, adParamOutput, , 0)
adocmd.Parameters.Append param
Set adors = adocmd.Execute
If Not adors.EOF And adors.BOF Then
MsgBox CStr(adors(0)) '应返回什么?
End If
MsgBox CStr(adocmd(0)) '应返回什么?
MsgBox CStr(adocmd(1)) '应返回什么?
End Sub
下面一本书上的一个类似的例子,结果返回为空....不知为什么???
想问样才能在VB中获得OUTPUT参数返回的值啊???存储过程:
CREATE PROCEDURE myproc @ioparm int OUTPUT AS
select * from usertb
select @ioparm=1
return 100
GOVB中调用:
Dim adocmd As New ADODB.Command
Dim adors As New ADODB.Recordset
Dim param As Parameter
adocmd.ActiveConnection = "DSN=bnkio;UID=whabbit;PWD=1010"
adocmd.CommandText = "myproc"
adocmd.CommandType = adCmdStoredProc
Set param = adocmd.CreateParameter("Retrun", adInteger, adParamReturnValue, , 0)
adocmd.Parameters.Append param
Set param = adocmd.CreateParameter("Output", adInteger, adParamOutput, , 0)
adocmd.Parameters.Append param
Set adors = adocmd.Execute
If Not adors.EOF And adors.BOF Then
MsgBox CStr(adors(0)) '应返回什么?
End If
MsgBox CStr(adocmd(0)) '应返回什么?
MsgBox CStr(adocmd(1)) '应返回什么?
End Sub
解决方案 »
- 关于SUM函数求和的问题,哪位大哥帮帮忙.
- vb+access 中如何删除表中的记录 在线等 请各位大虾帮忙
- 关于控件在网页显示及其功能的问题...急呀...
- 能否用set rs=conn.execute("insert into ...")返回记录集,如果不能...
- Win98 下 ADO 出错的问题,求救!!!
- 用那种查询更快些?
- 在线等候,百分求购,今晚就需,急!!!
- 万年历求助
- 什么地方可以找出IP地址所对应的地区呢?急
- 对于高手是轻而易举!我现在就要!
- 存储过程的返回值是空?!!!!!救命@@@@@@@@@@@@@@@@@@@@@@@@@
- 从一个窗口调一个查询窗口,从查询窗口怎么得到返回值?
MsgBox CStr(adors(0)) '应返回什么?
'返回第一个记录集select * from usertb中的第一条记录的第一列
End If
MsgBox CStr(adocmd(0)) '应返回什么?
'返回output参数 select @ioparm=1 即1
MsgBox CStr(adocmd(1)) '应返回什么?
'返回存储过程返回值return 100 即100
刚才If Not adors.EOF And adors.BOF Then 写错了,应为
If Not adors.EOF And Not adors.BOF Then
这句是返回第一个记录集select * from usertb中的第一条记录的第一列
但下面的两个就是返回空,郁闷死了....
我把它们改为MsgBox CStr(adocmd!Retrun)
MsgBox CStr(adocmd!Output)还是空....什么都没有...是不是系统问题? 但别的语句没有事啊!!
小马哥觉得是什么地方出了问题呢?
Set param = adocmd.CreateParameter("Retrun", adInteger, adParamReturnValue, , 0)
adocmd.Parameters.Append param
CREATE PROCEDURE [whabbit].[hello]( @ioparm int OUTPUT )
AS
select @ioparm=30
GO
VB中:
On Error GoTo err:
Dim adocmd As New ADODB.Command
Dim adors As New ADODB.Recordset
Dim param As Parameter
adocmd.ActiveConnection = "DSN=bnkio;UID=whabbit;PWD=1010"
adocmd.CommandType = adCmdStoredProc
adocmd.CommandText = "[whabbit].[hello]"Set param = adocmd.CreateParameter("Output", adInteger, adParamInputOutput, , 6)
adocmd.Parameters.Append param
Set adors = adocmd.ExecuteMsgBox CStr(adocmd!Output)
Exit Sub
err:
MsgBox err.Description返回结果是6,这是什么原因呢?
如果这样不行,能告诉我一个别的调用方法吗?
Set param2 = adocmd.CreateParameter("Output", adInteger, adParamOutput, , 6)
返回为空值.....
把你后面的6去掉
在If Not adors.EOF And adors.BOF Then
的时候出错
告诉我对象关闭时不容许操作
accessQQ.com 2004-3-4 ------------ALTER PROCEDURE sp_1
@p int output
as
begin
select * from tbluser
set @p=@@rowcount
if @@error <> 0
return @@error
end------------Function returnP()Dim cmd As New ADODB.Command
Set cmd.ActiveConnection = CONN
cmd.Parameters.Append cmd.CreateParameter("@P", adInteger, adParamOutput)cmd.CommandText = "sp_1"
cmd.CommandType = adCmdStoredProccmd.Parameters.Refresh '本句非常重要,经常会看到有网友问返回值得不到的情况,大部分是本句没有的原因
cmd.ExecuteDim i As IntegerFor i = 0 To cmd.Parameters.Count - 1
Debug.Print cmd.Parameters(i).Name & "=" & cmd.Parameters(i).Value
Next iSet cmd.ActiveConnection = Nothing
Set cmd = NothingEnd Function'----------测试---------? returnP()
@RETURN_VALUE=0//这个参就是RETURN的返回值
@p=2//这个是OUTPUT参数值
accessQQ.com 2004-3-4 ---------------------------------
ALTER PROCEDURE sp_2
@p int output,
@p1 int,
@p2 intas
set @p = @p1+@p2
return 99
---------------------------------Function returnP() Dim cmd As New ADODB.Command
Set cmd.ActiveConnection = CONN
'@return_value"这个参数在输入参数的最前面,名称是固定的
cmd.Parameters.Append cmd.CreateParameter("@return_value", adInteger, adParamReturnValue)'输入和输出的参数顺序同存储过程的参数顺序 cmd.Parameters.Append cmd.CreateParameter("@p", adInteger, adParamOutput)
cmd.Parameters.Append cmd.CreateParameter("@p1", adInteger, adParamInput,,1)
cmd.Parameters.Append cmd.CreateParameter("@p2", adInteger, adParamInput,,2) cmd.CommandText = "sp_2"
cmd.CommandType = adCmdStoredProc cmd.Execute Dim i As Integer For i = 0 To cmd.Parameters.Count - 1
Debug.Print cmd.Parameters(i).Name & "=" & cmd.Parameters(i).Value
Next iSet cmd.ActiveConnection = Nothing
Set cmd = NothingEnd Function'----------测试---------? returnP()
@return_value=99
@p=3
@p2=2
@p1=1