隐形人 发表于 2009-10-16 18:04:57

用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 -sqtp/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:29

转义一下看看 \

隐形人 发表于 2009-10-19 10:31:26

我明白你要我用转义字符的意思,因为“@”在批处理下是命令不回显的意思,所以我的d.txt文件里面是没有我的输出命令的。
我用转义字符:“、”,“^”都试过,还是不行的
还有没有其他的建议??

隐形人 发表于 2009-10-20 17:26:20

这个问题通过另外的一种方法解决了,就此吧解决方法列出来:
修改:\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');"就是输出一段引号内的文本,虽然方法有点笨同时加大了系统的负担,不过好在能够解决问题。特此记录一下。
页: [1]
查看完整版本: 用vbscript/javascript 调用sqlplus命名