51Testing软件测试论坛

标题: 关于数据库查询中的参数化问题 [打印本页]

作者: suntu    时间: 2005-10-18 08:59
标题: 关于数据库查询中的参数化问题
select * from VENTURE.VW_RESULT_2000010 where (currency_code = '0' ) and tradedate between '20050301' and '20050310' and branch_code='0210'
对以上sql语句要实现参数化该怎么办?
我知道如果where后面只有branch_code='0210'一个条件时可以用
pre = "select * from VENTURE.VW_RESULT_2000010 where branch_code= ";
id =0210;
strQuery = pre & id;
但是现在后面有好几个条件,如果要把20050301,20050310与0210一起都参数化,该怎么办呢?
作者: aswoon911    时间: 2005-10-18 10:58
既然可以设一个变量id,为何不试试设多个变量代替其余参数啊?
作者: suntu    时间: 2005-10-18 12:54
我也是这么想,但是不知道用什么格式排列才能运行正确。。难道要用&aa&bb&cc这样的格式吗?可是程序怎么知道这些参数的一一对应关系呢?
作者: aswoon911    时间: 2005-10-18 13:34
方法多啊,如果你需要参数化的数据不多,意思是说,比如 "id =0210"就用一次或少数次,你就直接写:

parameter1=20050301;
parameter2=20050310;
parameter3=0210;

sqlstr="select * from VENTURE.VW_RESULT_2000010 where currency_code = '0' ) and tradedate between '" &parameter1& "' and '"&parameter2& "' and branch_code='"&parameter3& "'";

.....
例如:
db_execute_query ( session_name, sqlstr, record_number );
作者: aswoon911    时间: 2005-10-18 13:35
如果次数很多,你可以利用数据驱动来完成,基本上就是从xls里读出3个参数即可
作者: suntu    时间: 2005-10-18 18:43
谢谢楼上啊!!




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