CLOBstd::vector
から OCCI 経由でデータを読み取ります。単純化されたコードは次のようになります。
oracle::occi::Clob clob = result.getClob( 3 );
unsigned len = clob.length();
std::vector< unsigned char > result( len );
unsigned have_read = clob.read( len , result.data() , len );
これにより、エラー ORA-32116 が発生し、バッファ サイズ (read の 3 番目の引数) は、読み取るデータの量 (read の 1 番目の引数) と同じかそれ以上である必要があります。この条件は明らかに保たれています。
バッファー サイズを 4*len に増やした後:
unsigned have_read = clob.read(len , result.data() , 4 * len);
操作は適切に行われます。これまで、 と の値have_read
はlen
常に同じでした。
文書化されていない余分なスペースがバッファーに必要ですか? それとも完全なページが必要ですか?
「Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit」を使用しています。
このトピックに関する説明は大歓迎です。