我有这样的查询。
with test1 as (
select emp.empno, emp.deptno, emp.name, emp.hiredate, dept.deptname
from emp, dept
where
emp.deptno = dept.deptno
and emp.deptno = 72
and emp.salary > 5000
)
select inner1.*
from (
select 'abc' as title,
1 emp_order,
name, hiredate, deptname
from test1
UNION ALL
select 'xyz' as title,
2 emp_order,
name, hiredate, deptname
from test1
) inner1
我试图完全删除WITH子句并改为创建一个VIEW。我唯一的问题是WITH子句中的动态值。
我试过了:
CREATE VIEW testview as
select emp.empno, emp.deptno, emp.name, emp.hiredate, dept.deptname
from emp, dept
where
emp.deptno = dept.deptno
and emp.deptno = 72
and emp.salary > 5000
更新了查询
select inner1.*
from (
select 'abc' as title,
1 emp_order,
name, hiredate, deptname
from testview
UNION ALL
select 'xyz' as title,
2 emp_order,
name, hiredate, deptname
from testview
) inner1
在这种情况下,如何在视图中传递salary和deptno cols的绑定值?
答案 0 :(得分:1)
如果我理解正确,那么您想在视图中使用参数。
为此,您可以使用以下任一方法:
a。)如果您的参数或多或少是静态的并且不经常更改,则可以使用表来存储此参数的值。可以使用PL / SQL包或过程更新此表中的值。然后可以在您的视图中修改此表格。
b。)如果您为不同的会话需要不同的参数值,您也可以尝试使用给定的here
的应用程序上下文希望有所帮助
Vishad
答案 1 :(得分:0)
您无需删除公用表表达式即可在视图中使用此查询。如果删除谓词并将它们应用于针对视图的查询,则无论如何它们都可以推入CTE内。
e.g。
CREATE VIEW testview as
select emp.empno, emp.deptno, emp.name, emp.hiredate, dept.deptname, emp.salary
from emp join dept ON emp.deptno = dept.deptno;
select inner1.*
from (
select 'abc' as title,
1 emp_order,
name, hiredate, deptname
from testview
where deptno = 72 and salary > 5000
UNION ALL
select 'xyz' as title,
2 emp_order,
name, hiredate, deptname
from testview
where deptno = 72 and salary > 5000
) inner1