4

Oracle 10 g を使用しています。

タイプの2つの列を必要とするテーブルがありますLong

CREATE TABLE emp
 (
    id1 LONG NULL,
    id2 LONG NULL,
    //
    // Other columns.
);

このクエリを実行すると、次のエラーが表示されます。

Error report:
SQL Error: ORA-01754: a table may contain only one column of type LONG
01754. 00000 -  "a table may contain only one column of type LONG"
*Cause:    An attempt was made to add a LONG column to a table which already
           had a LONG column. Note that even if the LONG column currently
           in the table has already been marked unused, another LONG column
           may not be added until the unused columns are dropped.
*Action:   Remove the LONG column currently in the table by using the ALTER
           TABLE command.

Googleで検索しましたが、適切な解決策が見つかりませんでした。の 2 列を許可しないのはなぜLONGですか?

number列の代わりに使用することは良い考えですか?

どうすればこれを達成できますか?

4

2 に答える 2

11

LONG列は長い間推奨されていません。8i以降だと思います。11gのドキュメントから:

LONG 列を含むテーブルを作成しないでください。代わりに LOB 列 (CLOB、NCLOB、BLOB) を使用してください。LONG 列は、下位互換性のためにのみサポートされています。

LONGテーブルには1 つの列しか許可されませんでした。完全にはわかりませんが、LONGデータが他の列と一緒に保存されていたためだと思います。複数の列があると、さらに管理しにくくなります。LOB の格納方法は異なります。比較については、こちらの表を参照してください。


Oracle のLONGデータ型は「2 ギガバイトまでの可変長の文字データ」です。数値データを格納する場合は、 を使用しますNUMBER

Java データ型をマッピングしている場合 (プロファイルから推測してください!)、このテーブルが役立つ可能性があります。

于 2012-07-25T09:03:07.613 に答える
1

Oracle 8i以降、LONGデータ型は使用せず、代わりにCLOBまたはNLOBデータ型を使用することをお勧めします。

念のため、データ型に関するOracle10gのドキュメントを確認してください。その他の詳細についてもこちらを確認してください

于 2012-07-25T09:08:18.907 に答える