将参数传递给 VO SQL 瞬态属性

passing parameters to VO SQL transient attribute

我为 scott.emp 创建了一个视图对象 table 我添加了一个瞬态属性,然后将默认值更改为 SQL 并编写如下语句:

select max(nvl(sal, 0)) 来自 emp 其中 deptno = view.deptno

我的问题是:如何将 view.deptno 作为参数传递给 sql 语句?

运行页面,我有一个错误。

ORA-00904: "EMP_VO"."DEPTNO": 无效标识符

如果您检查您的 VO 的查询,它应该类似于:

SELECT Emp.EMPNO, Emp.ENAME, Emp.JOB, Emp.MGR, Emp.HIREDATE, Emp.SAL, Emp.COMM, Emp.DEPTNO, (select max(nvl(sal, 0)) 来自 emp 其中 deptno = Emp.DEPTNO) 来自 EMP Emp

我从以前的答案中得到灵感解决了这个问题,正如我在默认值的 sql 字段中所写的那样,以下子句通过使用 Entity 属性使其有效。

select max(nvl(sal, 0)) from emp where deptno = Emp_EO.DEPTNO

在我的第一个 post 中,我在 where 子句中使用了 View 对象属性,但这会抛出以上错误 ORA-00904。

where 子句中的条件值必须是实体属性而不是视图属性。

 Emp_EO.DEPTNO