оракул изменить тип переменной - PullRequest
0 голосов
/ 24 октября 2018

Я использую первый подход кода, и я предполагаю, что тип по умолчанию для строки на стороне базы данных - nvarchar (), но я обнаружил, что nclob больше, чем nvarchar, и я не понял, почему.

это часть моей модели:

  public string Name { get; set; }
    public string En_Name { get; set; }

и это ее конфигурация:

 this.Property(p => p.Name).HasMaxLength(200).IsOptional();
        this.Property(p => p.En_Name).HasMaxLength(50).IsOptional();

мне нужно, чтобы это был nvarchar, а не nclob

1 Ответ

0 голосов
/ 24 октября 2018

Я не говорю на языке, который вы используете.

Однако, с точки зрения 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, так что, надеюсь, ваш код будет работать правильно.

Если описанный выше подход не сработает (поскольку вам не разрешено изменять тип данных столбца), я думаю, что кому-то еще придется помочь.

...