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