Я пытаюсь вызвать функцию внутри пакета, который возвращает определенный пользователем тип, присутствующий в другой схеме.вызывающая функция, возвращающая тип пользователя из другой схемы в Oracle
Функция и пакет декларации как ---
CREATE OR REPLACE PACKAGE PA_WEBHOOK
AUTHID CURRENT_USER
IS
TYPE gcur_table_data IS REF CURSOR;
TYPE typ_tab_updated_ids IS TABLE OF orders.order_sid%TYPE;
FUNCTION fn_order_customer_get (p_str_order_id IN orders.order_id%TYPE) RETURN gcur_table_data;
END PA_WEBHOOK;
/
Как ясно видно, что функция возвращает реф курсор в качестве вывода для выбранного количества строк.
Теперь для того, чтобы достичь этого, я последовал следующий steps--
1) создание роли -
CREATE ROLE ECOMMERCE_APP_ROLE;
2) предоставление привилегии роли ---
GRANT EXECUTE ON PA_WEBHOOK TO ECOMMERCE_APP_ROLE;
3) назначение роли пользовательской схеме
GRANT ECOMMERCE_APP_ROLE TO ECOMM_APP;
4) создание синонима для пакета в другой схеме
Хотя я могу вызвать функцию из другой схемы, но я получаю нуль в наборе результатов, но всякий раз, когда я выполняю запрос, упомянутый в функции I могут видеть результаты.
Является ли это что-то из-за типа созданного внутри пакета, если да, то кто-то может привести мне путь, чтобы получить правильный результат установить
Проблема первоначально заключалась в самой функции, так как максимальное количество для курсора было достигнуто в системе. – Abhi
Я уже предоставил обязательные привилегии, то есть выполнил в пакете, выберите/обновить/вставить/удалить в таблице, выбрать по seq и выполнить по определенному пользователю типу, следовательно, привилегии не были проблемой.Проблема связана с конфигурацией, где упомянутый максимальный размер курсора был действительно низким, что вызывало проблему в самой функции, узнайте об этом, удалив раздел обработки исключений из функции. – Abhi
Да, но вы используете полностью квалифицированные ссылки на таблицы/объекты, например. 'schema.table_name' или неквалифицированные ссылки, например. 'Table_name'? В более позднем случае при доступе к той же схеме, которая владеет пакетом, тогда функция найдет объекты, на которые ссылаются, но при обращении к другой схеме она найдет только ссылки на объекты, если эта схема имеет локальный или глобальный синоним, указывающий на правильную объект или схема принадлежит объекту с тем же именем (и, надеюсь, такого же типа). Это часть утверждения 'AUTHID CURRENT_USER'. – Sentinel