执行包函数在SQL Workshop中有效,但在Application Builder中无效

时间:2017-07-31 18:46:03

标签: oracle database-schema oracle-apex

背景
我正在使用Oracle Apex为第三方SIS(学生信息系统)PowerSchool生成报告,该报告位于自己的模式PS中。 在Select S.ID As Student_ID , S.Student_Number As Student_Number , S.LastFirst As LastFirst , ps.cksd_student.get_student_enroll_status(S.Enroll_Status) As Enroll_Status , S.Grade_Level As Grade_Level , S.SchoolID As SchoolID , Sch.Name As School_Name From Students S Inner Join Schools Sch On Sch.School_Number = S.SchoolID 中,我将关键业务逻辑抽象为一个自定义函数集合 - CKSD_Students。 的问题
试图从APEX内部访问这些功能。使用以下单个查询作为示例:

PS_Apex

从SQL Workshop, Technical Info (only visible for developers) • is_internal_error: true • apex_error_code: APEX.AUTHORIZATION.ACCESS_DENIED • component.type: APEX_APPLICATION_AUTHORIZATION • component.id: 8270293315071117 • component.name: User still logged into PowerSchool • error_backtrace: • ----- PL/SQL Call Stack ----- • object line object • handle number name • 00007FFCA77EF398 642 package body APEX_050000.WWV_FLOW_ERROR • 00007FFCA77EF398 710 package body APEX_050000.WWV_FLOW_ERROR • 00007FFCA77EF398 1014 package body APEX_050000.WWV_FLOW_ERROR • 00007FFCC10C9B30 793 package body APEX_050000.WWV_FLOW_AUTHORIZATION • 00007FFCBE34C0A0 4518 package body APEX_050000.WWV_FLOW • 00007FFCA89F3C28 173 procedure APEX_050000.F • 00007FFCA0EA4800 2 anonymous block 架构中的SQL命令窗口,此查询执行正常 在应用程序构建器中,当我创建测试报告并将此查询用于内容正文查询时:

  1. 查询编译(验证)没有错误。
  2. 运行时(蓝色开始箭头)我收到以下错误:

    PS_APEX
  3. 这个错误让我觉得问题是SQL Workshop使用APEX_050000而报告正在使用PS。这是有道理的,因为我在PS中创建的视图无法从APEX访问,直到我授予select。

    为了尝试解决这个问题,在EXECUTE APEX_050000 NO PS CKSD_STUDENT DEBUG APEX_050000 NO PS CKSD_STUDENT EXECUTE APEX_ADMINISTRATOR_ROLE NO PS CKSD_STUDENT EXECUTE APEX_LISTENER NO PS CKSD_STUDENT EXECUTE APEX_PUBLIC_USER NO PS CKSD_STUDENT EXECUTE APEX_REST_PUBLIC_USER NO PS CKSD_STUDENT EXECUTE NAVIGATOR_ROLE NO PS CKSD_STUDENT EXECUTE PSNAVIGATOR NO PS CKSD_STUDENT EXECUTE PS_APEX NO PS CKSD_STUDENT EXECUTE PS_MGMT NO PS CKSD_STUDENT 模式中,我已经将许多不同的模式执行(甚至绝望调试)。以下是完整列表:

    {{1}}

    人们做了什么来访问APEX中不同模式的包?有人能帮我弄清楚我错过了什么吗?

1 个答案:

答案 0 :(得分:1)

APEX以不同的方式运作 所有查询,包,函数等都以解析模式的权限运行。要查看它,请转到您的应用程序(包含该应用程序页面列表的页面),单击Edit Application Properties,转到Security - Database session部分。在那里,您将看到一个字段Parsing schema - 它是您的应用程序的主要架构 您需要授予权限才能对此解析架构执行包CKSD_Students,然后在您的代码中将此包称为PS.CKSD_Students

或者,第二种方式,如果您有权访问,则可以登录APEX INTERNAL工作区。在工作区管理部分中,您可以将PS架构分配给应用程序的工作区。之后,必须在应用程序中访问PS模式的所有对象。