Использование значения Oracle CLOB внутри MERGE - PullRequest
0 голосов
/ 23 ноября 2018

Я пытался скопировать значения между таблицами с помощью этого запроса:

MERGE INTO workflow W
   USING ( 
       SELECT distinct pr.workflow_id, pr.name, pr.description FROM workflow_revision pr, workflow pw WHERE pw.id = pr.workflow_id 
   )WR
   ON ( W.id = WR.workflow_id )
   WHEN MATCHED THEN
   UPDATE SET W.name = WR.name, W.description = WR.description

Но выдает следующую ошибку: ORA-00932: inconsistent datatypes: expected - got CLOB

При удалении этого описание столбец из запроса, то он работает нормально.Это longtext .

Я просто не знаю, как это исправить.Можете ли вы мне помочь?


Когда @eaolson запросил расположение таблиц, я даю оригинальный снимок экрана: enter image description here


После @Коммит Лукаша Шозды Я принял это как ответ:

MERGE INTO workflow W
USING (
   SELECT workflow_id, name, (CAST (description AS VARCHAR2(4000))) AS description FROM workflow_revision
)WR
ON (W.id = WR.workflow_id)
WHEN MATCHED THEN
UPDATE SET W.name = WR.name, W.description = WR.description;

Но, как он и предупреждал;это приемлемый ответ, если длина столбца описания макс. 4000 (или значение, которое вы там указали) составляет.

1 Ответ

0 голосов
/ 23 ноября 2018

Нет необходимости в JOIN:

MERGE INTO workflow W
USING (SELECT workflow_id, name, description FROM workflow_revision)WR
   ON (W.id = WR.workflow_id)
WHEN MATCHED THEN
UPDATE SET W.name = WR.name, W.description = TO_LOB(WR.description);
...