1

これを回避する方法はありますか??

次のような構造のテーブルにデータを挿入しようとしています。

Column name          Type                                    Nulls

crs_no               char(12)                                no
cat                  char(4)                                 no
pr_cat               char(1)                                 yes
pr_sch               char(1)                                 yes
abstr                text                                    yes

最後のフィールドのタイプは「テキスト」ですが、このテーブルに挿入しようとすると、次のエラーが発生します。

insert into crsabstr_rec values ("COMS110","UG09","Y","Y","CHEESE");

  617: A blob data type must be supplied within this context.
Error in line 1
Near character position 66

したがって、このフィールドは明らかにある種の blob ですが、挿入 (または更新) は受け付けません。通常、これらのレコードは GUI フォームに挿入され、C コードが挿入を処理します。

4

2 に答える 2

4

Informix Dynamic Server (IDS) には blob (BYTE または TEXT) リテラルはありません。また、IDS 9.00 以降の CLOB または BLOB タイプにもありません。それは私にとって継続的なフラストレーションの源です。私は何年もの間システムに機能要求を持っていましたが、内部的に痛みのしきい値に達することはありませんでした。つまり、修正されることを意味します.

それにもかかわらず、それは常に人々を噛んでいます。

IDS 7.3 (アップグレードを目指すべきです - 10 年ほど経った 2009 年 9 月にサービスを終了します) では、データベースの TEXT フィールドにデータを取得するために C を使用することにほとんど行き詰まっています。承認された C タイプ 'loc_t' を使用して BYTE または TEXT データに関する情報を保存し、それをサーバーに渡す必要があります。

ESQL/C の例が必要な場合は、International Informix User GroupのWeb サイト、特にSoftware Repositoryを参照してください。とりわけ、元の SQLCMD プログラム (Microsoft の同名のプログラムは Johnny-Come-Lately です) がソース形式で含まれています。また、私が「ビネット」と名付けた一連のプログラムも含まれています。それらはさまざまな方法でブロブを操作し、さまざまなシナリオで「loc_t」構造を使用する方法を示すように設計されています。

于 2009-07-02T14:51:06.903 に答える