我想调用一个函数,它返回一个用户定义的类型,它存在于不同的模式中。调用函数从Oracle中的不同模式返回用户类型
的功能和封装的声明是像---
因为它明显看出,函数返回一个引用游标作为行的选定数目的输出。
下列现在,为了实现这一目标,我按照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