• 締切済み

LONG RAW型について

> はじめまして。 > C言語でLONG RAWに対して > SQLExecDirectを用いて UPDATE A SET DAT=HEXTORAW('***'); > ***は2000バイト以上 > を行なったところエラーとなってしまいました。 > LONG RAW型は2Gバイトまで対応していると思うのですがどうしてでしょうか? HEXTORAW関数がRAW値(2000バイトまで)を返すからだと思われるのですが 2000バイト以上のバイナリデータを扱うにはどうしたらよいのでしょうか? バージョン情報 OS:WindowsNT Oracle8 : 8.0.5.0.0 ODBC : 8.0.5.1b.0

みんなの回答

  • Mizyu
  • ベストアンサー率41% (245/593)
回答No.2

返事が遅くなりました。申し訳ありません。 Error Code 1704はサイズオーバーです。 HEXtoRAWで返される値と、テーブル定義をもういちど見直してみてはいかがでしょうか? 具体的な解決案が見ません・・・。ごめんなさい。

tosakoku
質問者

お礼

回答ありがとうございます。 残念ながらオラクルサーバは他メーカであり、当然、テーブル定義も他メーカで 他メーカのオラクルサーバにアクセスするためHEXtoRAWで返される値もテーブル定義も見直しは難しいです。 他の方法を探って見ます。

  • Mizyu
  • ベストアンサー率41% (245/593)
回答No.1

HEXtoRAW関数の引数に入れているものがどういうものかわからないので、なんとも言えません。 そのSQLを流した時のエラーメッセージはなんと出ていますか?

tosakoku
質問者

お礼

回答ありがとうございます。 HEXtoRAW関数の引数は2000バイト以上のバイナリデータです。 エラーメッセージはSQLError関数の 4つ目の引数でS1000 5つ目の引数で1704 が返ってきています。

関連するQ&A

  • LONG RAW型のイメージデータ取り出しについて

    oracle10g環境で、LONG RAW型のカラムにイメージ(.JPG)が登録されております。 PL/SQLより、LONG RAW型のイメージデータを取り出したいのですが。 OO4Oでの取り出しあるのですが。PL/SQLで実現したいのです。 サイト検索しても見当たらないよう状態です。 PL/SQLで取り出す方法を教えていただきたいのですが。

  • オラクルのLONG RAW型のテーブルの操作方法と容量計算の仕方

    オラクル8.1.6で、LONG RAW型のカラムがあるテーブルへのインサート、アップデートの方法を教えてください。 Pro*Cで作成したツールはあるのですが、自分が少し扱えるPL/SQLでツールを持ちたいのです。BLOB型などはパッケージを使うということまではわかったのですが、LONG RAW型については、サイト検索しても見当たらないように思います。 また、テーブルの容量計算も通常のVARCHAR型やNUMBER方とは違うようです。VARCHAR型と同様の方法で計算してみたのですが、実際にPro*Cでテストデータをロードしてみたところ、見積もり以上のの容量を消費するようです。 よろしくお願いします。

  • c++でunsigned long long intを用いるには

    OS(ディストリビューション)はubuntuです。 この質問の目標は表題のように 「c++でunsigned long long intを使えるようにすること」 です。なお、マシンは32bitなので64bitよりは遅くなります。 http://www.wdic.org/w/TECH/long%20long まずgccのバージョンは、gcc --versionによると、 gcc (GCC) 3.3.5 (Debian 1:3.3.5-8ubuntu2.1) でした。そこで、gccのバージョンを3.4.4以上に しようと考えました。 (↓の人は3.4.4でできているらしい。 http://qune.cside.com/archives/000959.html) そこで、 http://webos-goodies.jp/archives/50899271.html にそってgccをアップデートしようとしましたが、 /etc/portage/ というディレクトリはありませんでした。次に、 http://www.gentoo.org/doc/ja/gcc-upgrading.xml にそってgccをアップデートしようとしましたが、 emergeというコマンドは入っていませんでした。 さて、質問は以下の通りです。 1.「目標」を達成するのにこのルートはあっているのでしょうか? 2.あっているのなら、emergeのインストール法を教えてください。 3.あっていないなら、どのようにしたら「目標」を達成できるでしょうか?

  • OracleのLONG型への insert について

    お世話になります。 ASP + Oracle8.0.5で開発中のシステムがあるのですが、 ASP上のテキストエリアに文章を記述して、OracleのテーブルのLONG型のカラムに対して insertを行うとエラーが起こってしまいます。 正しくは、全角で2000文字までは入力できるのですが、 それを越えてしまうと、ORA-01461エラー(LONG値はLONG列にのみバインドできます)という エラーが起こってしまい、カラムに対してinsertすることができません。 テーブルを見直してみたのですが、ちゃんとLONG型に設定してありました。 LONG型のカラムにデータを登録する際、4000バイト以上の文字列は挿入できないでしょうか? でもLONG型って、2GBまで使用できるはずでしたよね? ご教授のほど、よろしくおねがいします。

  • AccessからOrcleのODBCリンクテーブルへの挿入

    OS:XPpro Access:97,2000 Oracle:7 AccessからOracleのODBCリンクテーブルに対して追加クエリを実行すると、 ODBC--リンクテーブル'テーブル名'への挿入に失敗しました。 [Oracle][ODBC Oracle Driver][Oracle OCI]ORA-01461: can bind a LONG value only for insert into a LONG column.(#1461) というエラーが発生します。 メモ型のフィールド'A'をvarchar2(4000)のフィールド'B'に追加する部分で、LeftB(A,4000)としている部分がうまく行かないようようなので、LeftB(A,3000)と丸めてあげると通ります。 質問を纏めますと、 1.varchar2(4000)となっていても、4000Byteのデータを挿入することはできないのでしょうか。 2.発生しているエラーは、私の考えとは別の問題なのでしょうか。 ご回答よろしくお願いします。

  • オラクルのインストールについて

    オラクルがインストールできなくて困っています。 バージョンはOracle8i Workgroup Sever for WindowsNT R8.1.6 です。 CPUはPen4の1.4G、メモリは128Mで、OSはWin2000 Serverです。 症状はCDをセットすると最初の画面はたち上がるのですが、そこでインストールを選択すると何も起動せずに終わってしまうのです。ほかのCD-ROMの場合はこのようなことは起こりませんでした。 手の施しようが無くて困っております。どなたか助けてください。お願いします。

  • long型のランダムな値を返す方法

    C言語について質問させて頂きます。 私は今、0以上50万以下(上限は50万以上ならどんな値でもかまいません)の範囲でランダムに整数を得たいと考えております。 #include <stdlib.h>のint rand(void)は0以上の乱数を返してくれますが、返す値はintの範囲内(?)なので、要望に合っておりません。 そこで、long型のランダムな値を得たいと思っております。 一体、どのような関数またはアルゴリズムを使えば、望むように出来るのでしょうか? 是非、お教えください。

  • long型へのINSERTについて

    はじめましてアオツキと申します。 わたしはシステム開発を行なっていて、JAVAとOracleを使用しています。 質問させていただきたい内容は、テーブルのLONG型項目にに対してINSERT文を発行したときに起こるエラーを回避する方法です。 insert into testtable (longstr) values ('*' ×10000文字) を発行したところ「ORA-01704: 文字列リテラルが長すぎます 」 というエラーが発生しました。 このエラーを回避するため http://www.shift-the-oracle.com/oerrs/ora-01704.html 上記のURLを参考にし10000文字を分割して insert into testtable (longstr) values (TO_CLOB('*' ×3500文字) || TO_CLOB('*' ×3500文字) || TO_CLOB('*'×2000文字)) と分けてINSERT文を発行したのですが、 「ORA-22835: CLOBからCHAR、またはBLOBからRAWへの変換には、バッファーが小さすぎます(実際: 10503、最大: 4000)」 というエラーが発生しました。 このエラーについて http://otndnld.oracle.co.jp/document/products/oracle10g/102/doc_cd/server.102/B19212-01/e19400.htm 上記のURLの原因と処置を呼んだのですが意味が理解できませんでした。 どなたかテーブルに長文を登録する方法をご教授いただけないでしょうか? ご回答お待ちしています。 開発環境 JAVA eclipse SQL実行 eclipseプラグイン DBViewer ORACLE 10g OJDBCドライバ ojdbc14.jar

  • DATE型にNULLをセットするには?

    Oracle初心者です。 Oracle9.2iのDATE型にNULLをセットする方法を教えてください。 UPDATE及びPL/SQLでセットする方法 ちなみに.net2005 VBの言語で、DATE型にNULLをセット方法も同時に教えてください。

  • 各種デジタルカメラ用のRAWデータデコードツールdcraw.c

    dcrawは各種のデジタルカメラのRAWデータを ・24bit PPM ・48bit PPM ・Adobe PSD のいずれかに変換するツールで、ソースも http://www.cybercom.net/~dcoffin/dcraw/ にて公開されています。 このソースで質問ですが、24bit PPMとして書き出す write_ppm(FILE *) 関数で何か値をかけたりして色データを作っているようですが、 どうしてこういうことをするのですか? RAWデータは各色データが8ビット以上あるので、どうにか8ビットに変換しているのですか? カメラのことや、C言語についてもそこそこの知識しかないので分かりません。 分かる方、ご教授お願いします。