loadrunner oracle 数据库 连接,LoadRunner连接Oracle数据库

这个是在51上转载的。。

多谢楼主的奉献。。。

#include

static LRD_INIT_INFO InitInfo={LRD_INIT_INFO_EYECAT};

static LRD_DEFAULT_DB_VERSION DBTypeVersion[]={{LRD_DBTYPE_NONE,LRD_DBVERSION_NONE}};

//这里的LRD_VAR_DESC数据结构声明是很重要的,他是用来存储sql结果数据集的结构体,第一个参数头文件中就是这么写的,第二个参数是最大行数,第三个参数是每一行的最大长度,如果获得的查询结果比定义的长,运行时就会报错,提示列被截断,最后一个参数是查询结果的类型,可以再帮助中的索引输入data types, database,列出的表格中是各种变量类型的名称

static LRD_VAR_DESC NUM ={LRD_VAR_DESC_EYECAT, 10, 32, LRD_DBTYPE_ORACLE, {1, 1, 0},DT_LONG_VARCHAR};

//下面这些句柄等变量的申请都可以照着帮助中的例子写

static void FAR * OraEnv1;

static void FAR * OraSvc1;

static void FAR * OraSrv1;

static void FAR * OraSes1;

static void FAR * OraStm1;

static void FAR * OraDef1;

unsigned long rownum;

vuser_init()

{

//初始化数据库

lrd_init(&InitInfo,DBTypeVersion);

lrd_initialize_db(LRD_DBTYPE_ORACLE,3,0);

lrd_env_init(LRD_DBTYPE_ORACLE,&OraEnv1,0,0);

lrd_ora8_handle_alloc(OraEnv1,SVCCTX,&OraSvc1,0);

lrd_ora8_handle_alloc(OraEnv1,SERVER,&OraSrv1,0);

lrd_ora8_handle_alloc(OraEnv1,SESSION,&OraSes1,0);

//设置数据库名称,我的是oracle,odbc中连接数据库名称就是这个

lrd_server_attach(OraSrv1,"julang",-1,0,0);

lrd_ora8_attr_set_from_handle(OraSvc1,SERVER,OraSrv1,0,0);

//用户名和密码

lrd_ora8_attr_set(OraSes1,USERNAME,"netid",-1,0);

lrd_ora8_attr_set(OraSes1,PASSWORD,"111111",-1,0);

lrd_ora8_attr_set_from_handle(OraSvc1,SESSION,OraSes1,0,0);

lrd_session_begin(OraSvc1,OraSes1,1,0,0);

lrd_ora8_handle_alloc(OraEnv1,STMT,&OraStm1,0);

return 0;

}

//--------------------------------------------------------

Action()

{

//这里写上你的sql语句(我主要是需要查询的结果,如果你是插入或修改记录就不用往后看了)

//Select  verifycode From mobileverify Where Data='101592' and   mobileverifyid ='1409'

//lrd_ora8_stmt(OraStm1,"select count(*) from codelist where status =2",1,0,0);

lrd_ora8_stmt(OraStm1,"Select  verifycode From mobileverify Where Data='{usercode}' and   mobileverifyid ='{mobileverifyid}'",1,0,0);

//执行定义的sql,并且将结果行数返回到rownum中

lrd_ora8_exec(OraSvc1,OraStm1,0,0,&rownum,0,0,0,0,1);

//绑定该列

lrd_ora8_bind_col(OraStm1,&OraDef1,1,&NUM,0,0);

//设定保存列中的某个数据到row中,第二个参数为第几列,第三个参数为第几行(只能保存一个值),最后一个参数就是你想要保存到的parameter名称

lrd_ora8_save_col(OraStm1, 1, 1, 0, "result");

//这个遍历刚才查询的结果,第二个参数0表示就1行,负号表示遍历所有结果,绝对值表示实际有多少行,第三个参数表示一次遍历最大进行多少行(不能大于LRD_VAR_DESC中定义的第二个参数,即最大行数)

lrd_ora8_fetch(OraStm1, -2, 2 ,&rownum, 0, 2, 0, 0);

//这里我用error是为了看得醒目,不要认为是出错了

lr_error_message("sql result: %s", lr_eval_string("{result}"));

return 0;

}

//--------------------------------------------------------

vuser_end()

{

lrd_session_end(OraSvc1, OraSes1, 0, 0);

lrd_server_detach(OraSrv1, 0, 0);

lrd_handle_free(&OraEnv1, 0);

return 0;

}

//到此就结束了,但是这个东西目前我只是支持取出一个结果放到parameter中,还搞不懂如和将所有数据放入parameter中,来作为自动化时多用户使用的参数。在此抛砖引玉,希望有达人能够解决!!!

//另外要注意的是,如果你是录制了一个http协议的脚本,那么编译时无法通过的,需要创建一个odbc和http协议的混合脚本写入这些代码,然后再创建一个http脚本进行录制,然后将http中录制的脚本内容拷贝过来。俺也不知道为什么,如果我先录制脚本再插入这些代码总是提示lrd_init()未知错误:

//vuser_init.c(19): Error: C interpreter run time error: vuser_init.c (19):  Error -- Unresolved symbol : lrdfnc_init.

//vuser_init.c(19): Notify: CCI trace: Compiled_code(0): vuser_init()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值