1. ホーム
  2. oracle

[解決済み】ORA-00932: 整合性のないデータ型: 予想される - CLOB を取得しました。

2022-02-06 17:07:59

質問

ということを考えると TEST_SCRIPTCLOB この単純なクエリをSQL*PLUSからOracle上で実行すると、なぜかエラーが発生します。

ORA-00932: inconsistent datatypes: expected - got CLOB

同じエラーに関する質問をたくさん読みましたが、どれもSQLPLUSから直接クエリを実行しているわけではありません

    UPDATE IMS_TEST 
       SET TEST_Category  = 'just testing'  
     WHERE TEST_SCRIPT    = 'something'
       AND ID             = '10000239' 

完全な例です。

SQL> create table ims_test(
  2  test_category varchar2(30),
  3  test_script clob,
  4  id varchar2(30)
  5  );

Table created.

SQL> insert into ims_test values ('test1','something','10000239');

1 row created.

SQL> UPDATE IMS_TEST
  2  SET TEST_Category  = 'just testing'
  3  WHERE TEST_SCRIPT    = 'something'
  4  AND ID             = '10000239';
WHERE TEST_SCRIPT    = 'something'
      *
ERROR at line 3:
ORA-00932: inconsistent datatypes: expected - got CLOB

解決するには?

WHERE句にCLOBを入れることができない。 からの ドキュメント :

ラージオブジェクト(LOB)は、比較条件ではサポートされていません。 ただし、PL/SQL プログラムを使用して CLOB データを比較することは可能です。

値が常に4k未満である場合は

UPDATE IMS_TEST 
   SET TEST_Category           = 'just testing'  
 WHERE to_char(TEST_SCRIPT)    = 'something'
   AND ID                      = '10000239';

とにかくCLOBで検索するのはおかしい。IDカラムで検索できないのか?