请问怎么取出数据库的返回值,注意不是输入参数的值

kneek 2004-08-31 12:43:36
我的代码如下:
Dim rs As New ADODB.Recordset
Dim cn As New ADODB.Connection
Dim cmd As New ADODB.Command
Dim param As New ADODB.Parameter
cn.ConnectionString = "Driver={sql server};server=148.2.1.12;uid=sa;pwd=;database=data_db"
cn.Open
If rs.State = adStateOpen Then rs.Close
cmd.ActiveConnection = cn
cmd.CommandText = "test"
cmd.CommandType = adCmdStoredProc

'返回值
Set param = cmd.CreateParameter("RetVal", adInteger, adParamReturnValue, 4)
cmd.Parameters.Append param

'输入参数
Set param = cmd.CreateParameter("serviceid", adChar, adParamInput, 5, Trim(txtServiceid.Text))
cmd.Parameters.Append param

'输出参数
Set param = cmd.CreateParameter("servicename", adChar, adParamOutput, 40)
cmd.Parameters.Append param

Set rs = cmd.Execute()

If cmd.Parameters("RetVal").Value = 0 Then
MsgBox cmd.Parameters("servicename").Value
Else
MsgBox "没有记录"

End If

Set rs = Nothing
cn.Close
Set cmd = Nothing
Set param = Nothing
Set cn = Nothing

存储过程:
create proc test @serviceid char(5),@servicename char(40) output
as
select @servicename=service_name from conf_service where service_id=@serviceid
if @@rowcount=1
return 0
else
return @@rowcount

在VB的代码中去不出返回值和输出参数
如果我把
Set rs = cmd.Execute()
改为
cmd.Execute
可以取出输入参数@servicename的值还是取不出存储过程的返回值。请问错误原因在哪儿啊?
...全文
47 点赞 收藏 4
写回复
4 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
kneek 2004-08-31
前面说错了
标题应该是:
请问怎么取出数据库的返回值,注意不是输“出”参数的值
最后一句话应该是:
可以取出输“出”参数servicename的值还是取不出存储过程的返回值。请问错误原因在哪儿啊?
回复
kneek 2004-08-31
to online(龙卷风V2.0--再战江湖) :
原来是存储过程的差别啊,谢谢了,给分!
回复
online 2004-08-31
改一下

存储过程:
create proc test @serviceid char(5),@servicename char(40) output
as
select @servicename=service_name from conf_service where service_id=@serviceid
if @@rowcount=1
return 0
else
return 1

If cmd.Parameters("RetVal").Value = 1 Then
MsgBox cmd.Parameters("servicename").Value
Else
MsgBox "没有记录"

End If

回复
online 2004-08-31
参考
http://blog.csdn.net/online/archive/2004/08/05/66376.aspx
回复
相关推荐
发帖

1188

社区成员

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