51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 2225|回复: 4
打印 上一主题 下一主题

[原创] 请教通过QTP调用带返回参数的存储过程问题

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2009-7-17 14:16:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
之前参考了这个帖子
http://bbs.51testing.com/viewthr ... 6%B4%A2%B9%FD%B3%CC

我的代码
set conn=server.CreateObject("adodb.connection")
set cmd=server.CreateObject("adodb.command")
strconn="dsn=pubs;uid=sa;pwd"
conn.Open strconn
set cmd.ActiveConnection=conn
  cmd.CommandText = "call  test.p_test(?,?)"
        cmd.Parameters(0) =  "111111"
  cmd.Parameters(1) =  3
cmd.Execute()
return =cmd.Parameters.item(1)

存储过程p_test(p_contentstr IN VARCHAR2,p_retcode   OUT NUMBER)
定义了两个参数 一个输入 一个输出
上面的代码 运行后 发现return的值跟之前设置的值是一样的,上面代码 return返回的是3
而我存储过程中 返回值应该是1
但是存储过程又被执行了
这点很不明白 希望大家指点一下 谢谢
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
 楼主| 发表于 2009-7-17 15:30:01 | 只看该作者
又试了一下
  cmd.CommandText = "{call  test.p_test(?,?)}"
  cmd.Parameters.Append cmd.CreateParameter("@p_contentstr",3,1 )
  cmd("@p_contentstr")="1111"
  cmd.Parameters.Append cmd.CreateParameter("@p_retcode",3 ,4 )
这样写的话
通过cmd.Parameters.item(1)能取得存储过程中的返回值 但是又遇到新的问题
将  cmd("@p_contentstr")="1111"改成   cmd("@p_contentstr")="adbda" 就会出现“应用程序在当前操作中使用了错误类型的值”这个错误 ,这个问题就在 cmd.CreateParameter("@p_contentstr",3,1 )这里
中间的3代表的数据类型是adInteger,这就是为什么“1111”的时候能通过的原因
这里想请教一下 其他数据类型  比如VarChar之类的 ,CreateParameter()函数中的数据类型枚举是多少
我参考了下面的http://www.w3school.com.cn/ado/app_datatypeenum.asp,但是试了所有的字符串类型的枚举,
结果都报了这个错误 “不正常地定义参数对象。提供了不一致或不完整的信息。”
请大家帮帮忙 谢谢
回复 支持 反对

使用道具 举报

该用户从未签到

3#
 楼主| 发表于 2009-7-17 16:46:46 | 只看该作者
自己解决了
代码如下:
set conn=CreateObject("adodb.connection")
set cmd=CreateObject("adodb.command")
conn.ConnectionString = "dsn=pubs;uid=sa;pwd;"

conn.Open
If conn.State = 0 Then
    msgbox ("连接数据库失败")
else
  '   msgbox ("连接数据库成功")

end if
set cmd.ActiveConnection=conn
dim return
  cmd.CommandText = "{call  test.p_test(?,?)}"

  'input params
  cmd.Parameters.Append cmd.CreateParameter("@contentstr",8,1 )
cmd("@contentstr")="0000"

'output params
  cmd.Parameters.Append cmd.CreateParameter("@p_retcode",5,4 )
cmd.Execute()
bbb=cmd.Parameters.item(1)
msgbox (bbb)
回复 支持 反对

使用道具 举报

该用户从未签到

4#
发表于 2009-7-23 10:13:42 | 只看该作者

谢谢,我运气好,刚好需要

学习了^
回复 支持 反对

使用道具 举报

该用户从未签到

5#
发表于 2010-11-17 16:29:09 | 只看该作者
留个脚印
回复 支持 反对

使用道具 举报

本版积分规则

关闭

站长推荐上一条 /1 下一条

小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

GMT+8, 2024-11-26 04:23 , Processed in 0.063069 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

快速回复 返回顶部 返回列表