51Testing软件测试论坛

标题: 求助 :在 plsql下可以执行的语句放到wr下执行结果为 -10162 [打印本页]

作者: zhaoaihua305    时间: 2007-12-24 16:19
标题: 求助 :在 plsql下可以执行的语句放到wr下执行结果为 -10162
测试脚本为:(目的就是执行sql,察看是否执行成功)
public sql,rr,recordNumber;

db_connect("query1","DSN=salecs;UID=zhaoahWD=zhaoah;DBQ=salecs;DBA=W;APA=T;FEN=T;QTO=T;FRC=10;FDL=10;LOB=T;RST=T;FRL=F;MTS=F;CSR=FFC=10;TLO=0;",30);

sql="select * from ZY.RES_SIM a where 1 = 1 and rownum <= 100 and res_date < to_date('20081127121624','YYYYMMDDHH24MISS') "
    &"and (region_code = 771 or oregion_code = 771) and (receiver=0 or receiver is null) and brand in (0,5) and res_code = "
        &"200001 and hlr_code = 7711 and main_flag = 1 and sts = 2 and res_sts in (1,4,5) and exists(select 1 from "
        &"ZY.RES_MSISDN_IMSI_MAP b where b.start_msisdn <= '13607714582' and b.end_msisdn >= '13607714582' and "
        &"b.start_imsi <= a.imsi and b.end_imsi >= a.imsi)";
report_msg(sql);#--sql显示正确
rr=db_execute_query("query1",sql,recordNumber);
pause(rr);#--rr= -10162,为sql语法错误的提示信息
该问题问过同事,说是wr下的语法规则比plsql下的语法严格,但是查来查去,自己没看出什么不规则的地方了,麻烦各位火眼金睛帮忙看看。
作者: zhaoaihua305    时间: 2007-12-24 16:22
当然也可能是其他问题,欢迎指教
作者: lantianwei    时间: 2007-12-24 16:44
1.SQL语句本身可以执行吗?
2.把SQL语句写的简单点,看是否可以执行通过?
如果上面两个都不可以,可能是你DSN的设置或其他什么地方有问题
作者: zhaoaihua305    时间: 2007-12-24 17:01
1.sql可以单独执行通过
2.其他sql语句测试通过,比如说sql="select * from ZY.RES_SIM where rownum<10";
(同时也证明其他配置应该没问题吧)

是否有其他语法格式上的问题??
作者: lantianwei    时间: 2007-12-24 17:38
我的看法是:WR可能不支持复杂的SQL语句
或则你可以慢慢的将SQL语句复杂起来,看到底在哪个地方出错
作者: zhaoaihua305    时间: 2007-12-24 17:55
找到问题了,sql语句到....main_flag = 1可以执行通过,但是再加一个sts=2,就不通过了,初步确定楼上的说法,好像真不支持复杂(具体来说太长的?)的sql,这样子的话比较麻烦,sql语句没办法优化了,请问一下有什么解决的办法没?

只有分开来,比如说第一个条件执行后的结果放到第二个sql下再执行?累计得到结果?似乎有点繁琐了...
作者: zhaoaihua305    时间: 2007-12-24 18:00
现在得问题是想拆开也拆不开了 ,第一个 sql完整执行(就是不关联其他表 )也不通过(太长 ),没有办法拆吧

是否有其他解决办法 ?
作者: lantianwei    时间: 2007-12-25 12:38
用其他语言来实现 比如VBS 看看是否可以 昨天后来我还想到一个办法 但现在忘了 等记起来再跟你说
作者: dionysus    时间: 2007-12-25 12:49
WR连接数据库没有问题吧?
作者: zhaoaihua305    时间: 2007-12-25 16:01
回复楼上 :连接没有问题,呵呵,
后经多次调试,发现wr也不支持 exists,,, 修改成between,才调过 .

谢谢各位,
总结:wr对sql的支持语法严格,并且不支持复杂的sql语句(太成了很容易提示语法错误,但是不是绝对的,没有找到 限制的长度或者具体限制的复杂度),另外,好像不支持exists.
引用:
用其他语言来实现 比如VBS 看看是否可以 昨天后来我还想到一个办法 但现在忘了 等记起来再跟你说
----我们目前的系统框架只有初始化脚本的时候通过vba实现调用执行(具体有没有错误现在好像没遇到),vbs可以实现么?,呵呵,欢迎指教.

[ 本帖最后由 zhaoaihua305 于 2007-12-25 16:22 编辑 ]




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