oo4oによるBLOBデータ取得
ASPで作成したPDFバイナリデータをOracleにBLOB型で格納して、Perlからoo4oで参照する処理を作成しております。
PerlからBLOBデータを取得することはできたのですが、ところどころコードが変わっており、PDFデータとして認識されません。
格納したPDFデータをASPでは正常に参照できているため、格納されているデータに問題はないと思っております。
なんとか情報を集めて下記コードを作成しましたが、ご指摘などありましたら、宜しくお願いいたします。また、別の方法などありましたら教えてください。
[Perlソース(主要部分抜き出し)]
#セッション作成
$objSs=Win32::OLE->new('OracleInProcServer.XOraSession');
#DB接続
$objDb=$objSs->OpenDatabase($strOraSid,$strOraIdPwd,0);
#PDFデータ取得SQL作成
$strSQL="SELECT PDF_DATA FROM PDF_DATA_WRK WHERE SID = '$strID'";
#ダイナセット取得
$objDs=$objDb->CreateDynaset($strSQL,0);
#GetChunkでPDFデータ取得
my $chunkSize=50000;
my $sPos=0;
my $wk_buf="";
my $getSize=0;
my $buf_pdf="";
do{
$wk_buf = $objDs->{Fields}->Item('PDF_DATA')->GetChunk($sPos,$chunkSize);
$getSize = length($wk_buf);
$buf_pdf .= $wk_buf;
$sPos += $getSize;
} until ($getSize < $chunkSize);
$objDs->Close();
[ここまで]
お礼
回答ありがとうございます。 質問内容が未熟でしたので回答があるとは正直思ってませんでした。 参考URLに関してですが、ロケータが不正みたいなエラーが出るんですよね。Oracleではどうやら無理みたいです。それから色々試してなんとか解決したんですけど、ADODB.RecordSetを使って、 rs.Fields("カラム名").AppendChunk で書き込めました。 お忙しい中回答して頂いて有難うございました。また困ったら力になってください。では