Apex List Of Values定义

时间:2014-03-17 12:06:58

标签: sql oracle oracle-apex

APEX LOV

有没有办法查询表:P5_NS_ID指向?执行此查询时出错。

2 个答案:

答案 0 :(得分:3)

使用级联引用构建APEX值列表

@Frank Schmitt在他的解决方案中接近他的查询建议:

select "name" from (
  select * from dns_servers where id = :P5_NS_ID)
where "type" = :P5_REC_TYPE_ID

要克服您遇到的错误,但需要提醒一下您尝试创建的Oracle APEX元素类型背后的规则,LIST OF VALUES QUERY。这是Apex开发者区域中发布的基于查询的LOV示例的屏幕截图:

Oracle APEX List of Values Query Setup

请注意,查询输出中需要有两列。位置1中的值是DISPLAY VALUE(在使用它的选择对话框中显示的内容。)和RETURN VALUE(实际返回的内容作为页面项的输入值,显示来自的选项)查询。

您可能在实现级联输入参数的逻辑时遇到一些困难。以下是如何弄清楚的例子。

设置示例模式,HR-EMP

以下是我的示例中使用的表结构:

<强> DEPT

CREATE TABLE  "DEPT" 
   (    "DEPTNO" NUMBER(2,0), 
        "DNAME" VARCHAR2(14), 
        "LOC" VARCHAR2(13), 
     PRIMARY KEY ("DEPTNO") ENABLE
   )
/

<强> EMP

CREATE TABLE  "EMP" 
   (    "EMPNO" NUMBER(4,0) NOT NULL ENABLE, 
        "ENAME" VARCHAR2(10), 
        "JOB" VARCHAR2(9), 
        "MGR" NUMBER(4,0), 
        "HIREDATE" DATE, 
        "SAL" NUMBER(7,2), 
        "COMM" NUMBER(7,2), 
        "DEPTNO" NUMBER(2,0), 
         PRIMARY KEY ("EMPNO") ENABLE
   )
/

ALTER TABLE  "EMP" ADD FOREIGN KEY ("MGR")
    REFERENCES  "EMP" ("EMPNO") ENABLE
/
ALTER TABLE  "EMP" ADD FOREIGN KEY ("DEPTNO")
    REFERENCES  "DEPT" ("DEPTNO") ENABLE
/

此示例将使用三个LOV查询:

  1. 第一个LOV查询位于页面项中:P3_FIRST_CHOICE独立的任何值。它为用户提供了DEPARTMENT值的选择。

    SELECT DNAME || ', ' || LOC as d, DEPTNO as r
      FROM DEPT     
    
  2. 第二个LOV查询位于页面项P3_SECOND_CHOICE中,并依赖于P3_FIRST_CHOICE选择的输入。

    SELECT distinct JOB d, JOB r
      FROM emp
     WHERE emp.deptno = :P3_FIRST_CHOICE
    

    这使P3_SECOND_CHOICE成为第一个CASCADING PARAMETER值,因此级联LOV父项为:P3_FIRST_CHOICE。对于给定的部门,用户可以选择特定的JOB

    请注意,即使返回值与显示相同,LOV查询输出也需要两列。

  3. 第三个LOV查询位于页面项P3_THIRD_CHOICE中,并依赖于以下选项的输入:P3_FIRST_CHOICEP3_SECOND_CHOICE

    SELECT ENAME d, EMPNO r
      FROM emp
     WHERE DEPTNO = :P3_FIRST_CHOICE
       AND JOB = :P3_SECOND_CHOICE
    

    P3_THIRD_CHOICE具有CASCADING PARAMETER依赖关系,并提供一系列员工姓名,这些员工姓名的记录与前两个表单选择项中的所选DEPARTMENTJOB值相匹配。

  4. 有一个可选的第四个查询,用于填充从第三个LOV选择列表中选择的EMPLOYEE的报告。

  5. 您的APEX表单设计可能如下所示:

    Employee Query Form Design

    如何从级联表单输入项获取新参数

    这是示例查询表单:

    APEX Cascading LOV Entry Form Example

    第一个选择(部门)的条目选择:

    APEX Cascading LOV Department Selection Choice

    第二次选择(工作)的条目选择:

    APEX Cascading LOV Job Selection Choice

    第三选择(员工)的条目选择:

    APEX Cascading LOV Employee Selection Choice

    最终输出:所选员工的个人查询

    APEX Employee Report from Cascading LOV Parameters

答案 1 :(得分:1)

我不是APEX专家,但此查询看起来很糟糕 - 您从内部查询返回一个名为server_name的列,并且您尝试引用两列在您的外部查询中调用"name""type"

如果您的表格dns_servers确实包含名为"name""id"的列,我建议您返回内部查询中的所有列:

  select "name" from (
    select * from dns_servers where id = :P5_NS_ID)
  where "type" = :P5_REC_TYPE_ID