0

現在、sqlplus コマンドをテキスト ファイルにスプールしていますが、値をコンマで区切りたいため、これでも問題が発生しています。これまでのところ、機能していません。

私はこのようなものがうまくいくことを望んでいました

 @test = system('sqlplus un/pw@host @test.sql');

test.sql ファイルには、数値を返す 3 つのステートメントが含まれています。これらを @test 配列に保存できれば、これは素晴らしいことです。

何か案は?

4

2 に答える 2

2

DBD::OracleでDBIモジュールを使用します。

#!/usr/bin/perl
use warnings;
use strict;

use DBI;

my $dbh = DBI->connect("dbi:Oracle:host=host;sid=dbname",
                       $user, $password);

open my $IN, '<', 'test.sql' or die $!;
$/ = ';'; # Queries separated by semicolons, no other semicolons anywhere!
while (my $sql = <$IN>) {
    my $sth = $dbh->prepare($sql);
    $sth->execute;
    my @test = @{ $sth->fetchall_arrayref // [] };
    print "@$_\n" for @test;
}
于 2013-01-22T11:03:06.237 に答える
0

DBI スクリプト ベースは優れていますが、いずれにせよ sqlplus コマンドの使用に関する問題である場合は、この CPAN モジュール: Expectを参照してください。これにより、多くの便利な方法で外部コマンドをより詳細に制御できます。

于 2013-01-22T13:04:10.317 に答える