51Testing软件测试论坛

标题: 用vbscript/javascript 调用sqlplus命名 [打印本页]

作者: 隐形人    时间: 2009-10-16 18:04
标题: 用vbscript/javascript 调用sqlplus命名
已知:
1、oracle 的spool可以把命令窗口上的输出写入指定的文件.
2、e:\temp\c.sql文件的内容为:
   set echo on;
  spool e:\temp\obss.log;
  @e:\temp\a.sql;
  @e:\temp\b.sql;
  spool off;
  quit;
  quit;
  quit;
3、在plsql里面执行@e:\temp\c.sql,写入obss.log文件里面的结果为:
@e:\temp\a.sql;
insert into aaa select * from tb_user;

28 rows inserted
commit;

Commit complete
@e:\temp\b.sql;
insert into bbb select * from tb_case;

526 rows inserted
commit;

Commit complete
spool off;

问题来了:
我在VBS里面用:WshShell.Run "%comspec% /c sqlplus -s  qtp/qtp@ADMIN   @e:\temp\c.sql ",0, False ,返回的结果为:


已创建28行。


提交完成。


已创建526行。


提交完成。


我并不是在意中英文的问题,我关注的是为什么少了“@e:\temp\a.sql;”和”@e:\temp\b.sql;“这两条内容
高人们,有没有办法使得vbs生成的LOG日志里面有显示我输入的命令“@e:\temp\a.sql;”和”@e:\temp\b.sql;“呢??

help!!!!!
作者: blueeagle9999    时间: 2009-10-16 18:30
转义一下看看 \
作者: 隐形人    时间: 2009-10-19 10:31
我明白你要我用转义字符的意思,因为“@”在批处理下是命令不回显的意思,所以我的d.txt文件里面是没有我的输出命令的。
我用转义字符:“、”,“^”都试过,还是不行的
还有没有其他的建议??
作者: 隐形人    时间: 2009-10-20 17:26
这个问题通过另外的一种方法解决了,就此吧解决方法列出来:
修改:\temp\c.sql文件的内容为:
   set echo on;
  spool e:\temp\obss.log;
exec dbms_output.put_line('@e:\temp\a.sql');
  @e:\temp\a.sql;
exec dbms_output.put_line('@e:\temp\b.sql');
  @e:\temp\b.sql;
  spool off;
  quit;
  quit;


"exec dbms_output.put_line('@e:\temp\b.sql');"就是输出一段引号内的文本,虽然方法有点笨同时加大了系统的负担,不过好在能够解决问题。特此记录一下。




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