51Testing软件测试论坛

标题: 请教通过QTP调用带返回参数的存储过程问题 [打印本页]

作者: megami    时间: 2009-7-17 14:16
标题: 请教通过QTP调用带返回参数的存储过程问题
之前参考了这个帖子
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
但是存储过程又被执行了
这点很不明白 希望大家指点一下 谢谢
作者: megami    时间: 2009-7-17 15:30
又试了一下
  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,但是试了所有的字符串类型的枚举,
结果都报了这个错误 “不正常地定义参数对象。提供了不一致或不完整的信息。”
请大家帮帮忙 谢谢
作者: megami    时间: 2009-7-17 16: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)
作者: feiquan    时间: 2009-7-23 10:13
标题: 谢谢,我运气好,刚好需要
学习了^
作者: ym_wei    时间: 2010-11-17 16:29
留个脚印




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2