lr_eval_string和lr_save_string 使用注意事项
2013-05-28 07:23
513 查看
Loadrunner脚本中进行关联的时候,用到了一些函数,作用是把字符串保存到参数中,并且在需要的时候检索出来.C Vusers中用到的函数有:
lr_eval_string 所有出现参数的地方用它的当前值来代替.
lr_save_string 把null-terminated字符串保存到参数中.其中,null-terminated的意思,我从网上查了下是:"以空字符为结束标志的字符串",也就是以""结束的字符串,其中的0是ASCII码的0,是不能用显示字符表示出来的,只有用转义字符表示了.
lr_save_var 把变长字符串保存到参数中.
下面再来看下每个函数的具体解释(参考帮助):
lr_eval_string:
C Language
char * lr_eval_string (const char *
instring
);
返回内嵌参数赋值后的字符串。
instring:
需要赋值的字符串。
lr_eval_string函数返回任何内嵌参数赋值后的输入字符串。如果字符串变量只包含一个参数,函数返回参数的当前值。
内嵌参数必须在括号中。
注:lr_eval_string是内部地分配内存。在每一次迭代之后会释放。如果你在循环中给参数赋值,不要使用lr_eval_string保存内存。你需要使用lr_eval_string_ext,并且在每个循环迭代中使用lr_eval_string_ext_free释放内存。
这里我再补充一下:lr_eval_string_ext 在关联的数据是二进制数据,例如,数据包含嵌入的NULL字符时是非常有用的。
例子:下面的例子使用lr_eval_string来代替参数row_cnt的当前值。使用lr_output_message把这个值输出到输出窗口。
lrd_stmt(Csr1, "select count(*) from employee", -1, 1 , 2 , 0);
lrd_bind_col(Csr1, 1, &COUNT_D1, 0, 0);
lrd_exec(Csr1, 0, 0, 0, 0, 0);
lrd_save_col(Csr1, 1, 1, 0, "row_cnt");
lrd_fetch(Csr1, 1, 1, 0, PrintRow2, 0);
lr_output_message("value : %s",
lr_eval_string("The row count is: {row_cnt}"));
lr_save_string:
C Language
int lr_save_string (const char *param_value, const char *param_name);
param_value:给参数赋值的值,参数值
param_name:参数名称
lr_save_string函数把指定的以空结束的字符串赋值给参数。这个函数在关联查询的时候非常有用。需要使用lr_eval_string来确定参数的值。
例子:
在下面的例子中,lr_save_string给参数emp_id赋值为777。然后这个参数被用在另一个查询中。
lrd_stmt(Csr1, "select id from employees where name='John'", ...);
lrd_bind_col(Csr1,1,&ID_D1,...);
lrd_exec(Csr1, ...);
lrd_fetch(Csr1, 1, ...);
lr_save_string("777", "emp_id");
lrd_stmt(Csr1,"select salary from payment where id ='{emp_id}'",...);
lrd_exec(Csr1, 0, 0, 0, 0, 0);
lr_save_var
C Language
int lr_save_var (const char *
param_value, unsigned long const
value_len, unsigned long const options, const char *
param_name);
param_value:参数值
value_len:值的字节长度
options:参数选项,一般为0。
param_name:参数名称。
lr_save_var函数把指定的变长字符串赋值给参数。这个函数在关联查询的时候非常有用。需要使用lr_eval_string来确定参数的值。
例子:
在下面的例子中, lr_save_var 用来限制参数的长度。
Action()
{
#define MAX_NAME_LEN 4
// 创建参数, InName
lr_save_string("Fitzwilliam", "InName");
// 把 "InName"的前四个字节保存到 "ShortName"
lr_save_var( lr_eval_string("{InName}"),
MAX_NAME_LEN, 0, "ShortName");
return 0;
}
Output:
Action.c(8): Notify: Saving Parameter "InName = Fitzwilliam"
Action.c(10): Notify: Saving Parameter "ShortName = Fitz"
lr_eval_string 所有出现参数的地方用它的当前值来代替.
lr_save_string 把null-terminated字符串保存到参数中.其中,null-terminated的意思,我从网上查了下是:"以空字符为结束标志的字符串",也就是以""结束的字符串,其中的0是ASCII码的0,是不能用显示字符表示出来的,只有用转义字符表示了.
lr_save_var 把变长字符串保存到参数中.
下面再来看下每个函数的具体解释(参考帮助):
lr_eval_string:
C Language
char * lr_eval_string (const char *
instring
);
返回内嵌参数赋值后的字符串。
instring:
需要赋值的字符串。
lr_eval_string函数返回任何内嵌参数赋值后的输入字符串。如果字符串变量只包含一个参数,函数返回参数的当前值。
内嵌参数必须在括号中。
注:lr_eval_string是内部地分配内存。在每一次迭代之后会释放。如果你在循环中给参数赋值,不要使用lr_eval_string保存内存。你需要使用lr_eval_string_ext,并且在每个循环迭代中使用lr_eval_string_ext_free释放内存。
这里我再补充一下:lr_eval_string_ext 在关联的数据是二进制数据,例如,数据包含嵌入的NULL字符时是非常有用的。
例子:下面的例子使用lr_eval_string来代替参数row_cnt的当前值。使用lr_output_message把这个值输出到输出窗口。
lrd_stmt(Csr1, "select count(*) from employee", -1, 1 , 2 , 0);
lrd_bind_col(Csr1, 1, &COUNT_D1, 0, 0);
lrd_exec(Csr1, 0, 0, 0, 0, 0);
lrd_save_col(Csr1, 1, 1, 0, "row_cnt");
lrd_fetch(Csr1, 1, 1, 0, PrintRow2, 0);
lr_output_message("value : %s",
lr_eval_string("The row count is: {row_cnt}"));
lr_save_string:
C Language
int lr_save_string (const char *param_value, const char *param_name);
param_value:给参数赋值的值,参数值
param_name:参数名称
lr_save_string函数把指定的以空结束的字符串赋值给参数。这个函数在关联查询的时候非常有用。需要使用lr_eval_string来确定参数的值。
例子:
在下面的例子中,lr_save_string给参数emp_id赋值为777。然后这个参数被用在另一个查询中。
lrd_stmt(Csr1, "select id from employees where name='John'", ...);
lrd_bind_col(Csr1,1,&ID_D1,...);
lrd_exec(Csr1, ...);
lrd_fetch(Csr1, 1, ...);
ID_D1 | |
0 | 777 |
lrd_stmt(Csr1,"select salary from payment where id ='{emp_id}'",...);
lrd_exec(Csr1, 0, 0, 0, 0, 0);
lr_save_var
C Language
int lr_save_var (const char *
param_value, unsigned long const
value_len, unsigned long const options, const char *
param_name);
param_value:参数值
value_len:值的字节长度
options:参数选项,一般为0。
param_name:参数名称。
lr_save_var函数把指定的变长字符串赋值给参数。这个函数在关联查询的时候非常有用。需要使用lr_eval_string来确定参数的值。
例子:
在下面的例子中, lr_save_var 用来限制参数的长度。
Action()
{
#define MAX_NAME_LEN 4
// 创建参数, InName
lr_save_string("Fitzwilliam", "InName");
// 把 "InName"的前四个字节保存到 "ShortName"
lr_save_var( lr_eval_string("{InName}"),
MAX_NAME_LEN, 0, "ShortName");
return 0;
}
Output:
Action.c(8): Notify: Saving Parameter "InName = Fitzwilliam"
Action.c(10): Notify: Saving Parameter "ShortName = Fitz"
相关文章推荐
- 转:lr_eval_string,lr_save_string 和 sprintf 的使用
- string convert into dict 字符串转字典避免使用eval的注意事项
- lr_save_string & lr_eval_string使用介绍
- string convert into dict 字符串转字典避免使用eval的注意事项
- LoadRunner lr_eval_string() 函数使用及LR中变量、参数的简单使用
- hdu 1075 map的使用 字符串截取的常用手段 以及string getline 使用起来的注意事项
- Java中的String使用及注意事项
- php开发笔记(三)字符串(string)类型中单双引号使用的注意事项
- 性能测试培训总结-关联后如何使用该值?lr_save_string帮你
- Android第十七课 Jni string空串跨模块使用崩溃注意事项
- 使用STRINGN_TO_NPVARIANT和STRINGZ_TO_NPVARIANT 注意的事项
- JS使用eval解析JSON的注意事项分析
- lr_save_string 和 sprintf 的使用
- LR中Lr_save_string()函数和Itoa()函数的使用
- lr_eval_string()函数的使用
- Java使用for( : ) 为String[] 数组初始化注意事项
- Android BaseSavedState 以及 Activity onSaveInstanceState 和 onRestoreInstanceState 方法使用注意事项
- 性能测试培训总结-关联后如何使用该值?lr_save_string帮你
- js使用eval解析json实例与注意事项分享
- lr_eval_string()函数以及LR中参数、变量的简单使用