在unix中,我们用来连接到sqlplus的正常程序就像这样
sqlplus ${user}/${password}@${server} my_file.sql >> $Logfile 2>&1
其中我将上述命令中的所有信息附加到日志文件$Logfile
现在在perl我知道如何连接到sqlplus并执行sql脚本我使用了类似的东西
system("sqlplus -L ${user}/${password}@${server} my_file.sql")
但是使用system
我们无法向日志文件发送信息,它只会给出返回状态,我想跟踪执行命令的信息,就像我们在unix中一样,是否有办法执行此操作。请帮忙谢谢
答案 0 :(得分:5)
使用DBI
和DBD::Oracle
访问数据库要好得多,而不是运行交互式工具 SQL * Plus 。
但是如果你坚持创建一个单独的进程来操作你的数据库,那么传递给system
的相同命令将获得相同的结果。
我假设你想要字面上的符号@
吗?喜欢这个
system("sqlplus -L ${user}/${password}\@${server} my_file.sql >> $Logfile 2>&1")
或者你可以使用反引号:
open my ($log_fh), '>', $Logfile;
print $log_fh `sqlplus -L ${user}/${password}\@${server} my_file.sql`;