Ссылка на пользовательские типы Oracle через DBLINK?

Я работаю в двух разных схемах Oracle на двух разных экземплярах Oracle. Я определил несколько типов и наборов типов для передачи данных между этими схемами. Проблема, с которой я сталкиваюсь, заключается в том, что, хотя тип имеет абсолютно одинаковые определения (одни и те же сценарии, используемые для создания обоих наборов в схемах), Oracle видит их как разные объекты, которые не являются взаимозаменяемыми.

Я думал о приведении входящего объекта удаленного типа к тому же локальному типу, но я получаю сообщение об ошибке при ссылке на типы через dblinks.

По сути, я делаю следующее:

DECLARE
  MyType  LocalType; -- note, same definition as the RemoteType (same script)
BEGIN
  REMOTE_SCHEMA.PACKAGE.PROCEDURE@DBLINK( MyType );  -- MyType is an OUT param
  LOCAL_SCHEMA.PACKAGE.PROCEDURE( MyType ); -- IN param
END;

Это терпит неудачу, потому что вызов процедуры REMOTE не может понять MyType, так как он рассматривает LocalType и RemoteType как разные типы объектов.

Я также попытался объявить MyType следующим образом:

  MyType REMOTE_SCHEMA.RemoteType@DBLINK;

но я получаю еще одну ошибку о ссылках на типы через dblinks. CASTing между типами также не работает, потому что для приведения я должен ссылаться на удаленный тип через dblink - та же проблема, та же ошибка. Я также пытался использовать SYS.ANYDATA в качестве объекта, который пересекает два экземпляра, но он получает похожую ошибку.

Есть идеи?

ОБНОВИТЬ: Попытка объявления типа объекта с обеих сторон DBLINK с использованием одного и того же OID (извлекается вручную с помощьюSYS_OP_GUID()) но Oracle все еще «видит» два объекта как разные и выдает ошибку «неправильное число или типы аргументов».

Ответы на вопрос(2)

Ваш ответ на вопрос