请教通过QTP调用带返回参数的存储过程问题
之前参考了这个帖子http://bbs.51testing.com/viewthread.php?tid=108492&highlight=QTP%2B%B4%E6%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 = "calltest.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
但是存储过程又被执行了
这点很不明白 希望大家指点一下 谢谢 又试了一下
cmd.CommandText = "{calltest.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,但是试了所有的字符串类型的枚举,
结果都报了这个错误 “不正常地定义参数对象。提供了不一致或不完整的信息。”
请大家帮帮忙 谢谢 自己解决了
代码如下:
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 = "{calltest.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)
谢谢,我运气好,刚好需要
学习了^ 留个脚印
页:
[1]