如何使用perl脚本连接到sqlplus

时间:2014-09-04 14:49:34

标签: perl unix

在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中一样,是否有办法执行此操作。请帮忙谢谢

1 个答案:

答案 0 :(得分:5)

使用DBIDBD::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`;