「平成」を感じるもの

Perl初心者です。
PerlでOracleに接続し、結果をCSVを出力したいのですが
下記プログラムだとなにも出力されません。
Oracle10g
OS:Linux
***

#!/user/bin/perl
#
#
# DBI モジュールの読み込み
use DBI;

#接続
my $hDb = DBI->connect("dbi:Oracle:dbname", "user/pass") or die "CONNECT ERROR $DBI::errstr";

#SELECT
#
$hSt = $hDb->prepare("SELECT ID,NAME FROM MASTER");
open(OUT, ">data.dat");
#実行
$nRes = $hSt->execute;

#データの取得
while($raRes = $hSt->fetchrow_arrayref) {
print OUT join(",", @$raRes), "\n";
}

# ファイルクローズ
close(OUT);
$hSt->finish;
$hDb->disconnect;

A 回答 (3件)

ANo.1です。



>書き込みオープンのチェックはどのようにしたらできるのでしょうか?

最初に確認しておけばよかったのですが「何も出力されない」というのはdata.datがサイズ0で作成されるのでしょうか?それともdata.datの作成がされないのでしょうか?open(OUT, ">data.dat"); でも返り値がfalseの場合、エラーメッセージを出力させてみてください(or dieでいいです)。
    • good
    • 0

> print join(",", @$raRes), "\n";


>とすると画面出力できているので出力に失敗していると思います。

とのことですけど、
>open(OUT, ">data.dat");
データベースへの接続はチェックしているのにこの書き込みオープンを
チェックしていませんが、本当に書き込みオープンできてますか?

この回答への補足

書き込みオープンのチェックはどのようにしたらできるのでしょうか?

補足日時:2008/05/27 22:05
    • good
    • 0

>下記プログラムだとなにも出力されません。



問題の切り分けが出来ていないと思います。

・DBからのデータ取得に失敗している
・CSVファイルの出力に失敗している

print OUT・・の直後に何か表示を追加するなりして、問題の切り分けをしてください。

この回答への補足

print OUT join(",", @$raRes), "\n";
の部分を、
print join(",", @$raRes), "\n";
とすると画面出力できているので出力に失敗していると思います。

補足日時:2008/05/26 20:05
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


おすすめ情報