2010-08-24 3 views
3

Я пытаюсь выполнить операции SET в Oracle через удаленные базы данных. Я использую оператор MINUS.ORA-12704: Невозможно преобразовать данные символа

Мой запрос выглядит примерно так.

SELECT NAME FROM localdb MINUS SELECT NAME from [email protected] 

Это вызывает ошибку ORA-12704. Я понимаю, что это требует какого-то преобразования или настройки NLS.

Что мне делать дальше?

ответ

1

Два столбца name хранятся в разных наборах символов. Это может быть связано с их определениями типов, или это может быть связано с тем, что две базы данных используют разные наборы символов.

Возможно, вы сможете обойти это, явно преобразуя поле из удаленной базы данных в набор символов локального. Попробуйте следующее:

SELECT NAME FROM localdb MINUS SELECT TO_CHAR(NAME) from [email protected] 
+0

Спасибо. Вчера я немного погулял и смог использовать этот запрос. Также есть настройки NLS, которые могут привести к такому же эффекту. В этом случае, однако, проблема заключается в том, что столбец NAME на remotedb является NVARCHAR, а тот, который находится на локальном db, является VARCHAR2. – abhi

0

Он шьет типы столбцов ИМЯ в этих двух таблицах.

Убедитесь, что столбец ИМЯ в таблице remotedb равен того же типа в качестве ИМЯ в таблице localdb. Это обязательно, если вы используете оператор MINUS.

+0

Я не могу изменить ТИП в любой таблице. Поэтому должно произойти явное преобразование. – abhi