※ ChatGPTを利用し、要約された質問です(原文:CLOBデータの取得方法)
CLOBデータの取得方法
このQ&Aのポイント
WindowsXP、VB6(SP6)、Oracle10gの実行環境でCLOBデータを取得する方法について解説します。
CLOB型に変更したことにより、データ取得時にエラーが発生する問題があります。.VALUEプロパティ参照時のエラーを解消する方法や代替策を知っている方は教えてください。
CLOB型フィールドのデータを取得する際、to_char関数を使用するとエラーが解消されますが、データが4000バイトで切れる問題が発生します。適切なSELECT文の書き方や回避策についてご教示ください。
実行環境は、WindowsXP,VB6(SP6),Oracle10gで、oradc.ocxを使ってoo4接続しています。
SELECT実行時は、ORA_DYNASET.Fieldsを参照して.VALUEから検索結果値を取得しています。
今まで、LONG型フィールドは何もせずに値の取得が可能でしたが、
CLOB型に変更したことにより、ここでエラーが発生するようになりました。
CLOBのフィールドにto_char関数をかけると、.VALUE参照時のエラーは無くなりましたが、データが4000バイトで切れてしまいます。
現在当方での唯一の回避策は、CLOB型フィールド名を"A"とすると、
to_char(substr(A,1,4000)),
to_char(substr(A,4001,4000)),
to_char(substr(A,8001,4000)) ・・・・・
といった形でのSELECT文をきる事になります。
そもそもは、.VALUEプロパティ参照時のエラーを無くしたいのですが、無くす方法、又は、それにみあう代替策をご存知の方は教えてください。
※なお、LONG型の場合も、10gになってからはデータが4000バイトで切れるとの報告も受けております。最初はTO_CHAR関数のせいだと思っていましたが、VB側のオブジェクトの壁なのでしょうか・・・
補足
質問者です。大変遅くなりましたが、ご回答のお礼を申し上げます。有難うございました。 substrで切り取る方法を採用していたのですが、問題がありました(substrの結果、4001バイト目以降付近でデータが壊れるなど。切り取るデータに日本語文字列等が混在していたらなおまずい)。 最終結果を申し上げますと、 クライアントインストールフォルダ配下に入っている\oo4o\VB\SAMPLES\LOBコーディングを参考にして(明示的にCLOB型宣言されたバインド変数に受け取る方法)問題解決いたしました。 上記フォルダの存在を今回はじめて知りましたので、ご存知無いかたは参考まで