- 締切済み
PerlCGIでクエリの検索結果が途中で途切れる。
PerlCGIでクエリの検索結果が途中で途切れる。 環境: Windows 7 Home Premium 32bit Mem: 3.24GB Apache for win 2.2 Perl: v5.10.1 built for MSWin32-x86-multi-thread access の mdb を ODBC 接続し perl cgi をフロントエンドとして クエリを表示させようとしています。 クエリの表示自体はエラーなくできましたが、検索結果が全て表示されません。 # 本来は 200件以上あるはずなのに、半分以下しか表示されない。 感触として、バッファかなにかのバイト制限のような気もするのですが、 全ての検索結果を表示するためにはどうすればよいのかご教示いただけないでしょうか? コードは以下のとおりです。 -------------------------------------------------------- #!c:/perl/bin/perl.exe use Win32::ODBC; print "Content-type: text/html\n\n"; print "<html>\n"; print "<body>\n"; print "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=shift_jis\">\n"; $db= new Win32::ODBC("DSN=kaigai"); $str_sql = "SELECT q_prestounyu.hiduke, q_factory_master.koujyoryakumei, q_prestounyu.keiyaku, " ; $str_sql .= "q_prestounyu.hinban, q_pres_master.ryakumei, q_prestounyu.nyukousu "; $str_sql .= "FROM (q_prestounyu INNER JOIN q_pres_master ON q_prestounyu.presno = q_pres_master.presno) "; $str_sql .= "INNER JOIN q_factory_master ON q_prestounyu.koujyo = q_factory_master.koujyono "; $str_sql .= "WHERE (((q_prestounyu.hiduke)>=#2010/1/10# And (q_prestounyu.hiduke)<=#2010/1/31#)) "; $str_sql .= "ORDER BY q_prestounyu.hiduke;"; print "$str_sql<BR>\n"; $i=0; $db->Sql($str_sql); # 取得したレコードセットの数だけループして表示 while ( $db->FetchRow() ){ $i ++; undef %FIELDS; # 各フィールドのデータをハッシュに格納 %FIELDS= $db->DataHash(); print "$i "; print "$FIELDS{'hiduke'} $FIELDS{'koujyoryakumei'}\n"; print "$FIELDS{'keiyaku'} $FIELDS{'hinban'}\n"; print "$FIELDS{'ryakumei'} $FIELDS{'nyukousu'}<BR>"; } # データベースを閉じる $db->Close( ); print "</body></html>"; exit;
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- t-okura
- ベストアンサー率75% (253/335)
> ブラウザからのcgi出力ではなく、コンソール上で、 > perl hoge.cgi と実行しても結果が変わりませんでしたので、 > HTML構文のエラーの可能性は低いと思っています。 説明不足でした。HTML の構文エラーを疑ったわけではなく、 最後に改行がないと、出力したテキストがすべて出力されないと いう経験があったので、それを疑いました。 コンソールで実行された場合も同じとのことですが、</body></html> は表示されるのでしょうか。それともレコードを何件か出力したところで 終了するのでしょうか。 </body></html>が出ているのでしたら、データベースからのデータの取り出し に問題がありそうです。 一度 プログラムの先頭に use strict; use warnings; をつけて実行してみてはいかがでしょうか。
補足
物理的には4GBですが、OSが認識している容量を書いているだけです。 perl の gc では、この辺はあんまり関係ないと思いますが・・・