Я не говорю на языке, который вы используете.
Однако, с точки зрения Oracle: если тип данных столбца - NCLOB, вы не можете просто изменить на NVARCHAR2 (если это то, что вы хотите сделать).Хотя есть способ сделать это.Вот пример:
SQL> create table test (col nclob);
Table created.
SQL> insert into test values ('x');
1 row created.
SQL> alter table test modify col nvarchar2(20);
alter table test modify col nvarchar2(20)
*
ERROR at line 1:
ORA-22859: invalid modification of columns
SQL>
ОК, так не будет.Итак:
- создайте новый столбец (с типом данных NVARCHAR2)
- поместите туда содержимое NCLOB
- удалите старый столбец NCLOB
- переименуйтеновый столбец с именем старого столбца
.
SQL> alter table test add col_vc nvarchar2(20);
Table altered.
SQL> update test set col_vc = dbms_lob.substr(col, 20, 1);
1 row updated.
SQL> alter table test drop column col;
Table altered.
SQL> alter table test rename column col_vc to col;
Table altered.
SQL> desc test
Name Null? Type
----------------------------------------- -------- ----------------------------
COL NVARCHAR2(20)
SQL> select * From test;
COL
--------------------
x
SQL>
Теперь у вас есть столбец NVARCHAR2, так что, надеюсь, ваш код будет работать правильно.
Если описанный выше подход не сработает (поскольку вам не разрешено изменять тип данных столбца), я думаю, что кому-то еще придется помочь.