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/*Deferred*/,2/*Ora V7*/,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  
  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"