如何更换? oracle 中的值 sql 如果在同一 oracle 查询中多次使用相同的值
How to replace ? value in oracle sql if used the same in multiple times in same oracle query
示例:
select * from employee, department
where
employee.empid=?
and department.empid=?
--?用于为 employee.empid 和 department.empid.
获取相同的值
感谢您的回答。
嗯,您的查询似乎错误而且您的问题也没有多大意义。在我看来,你应该加入那些table并使用一个参数。例如,像这样:
select *
from employee e join department d on e.deptno = d.deptno
where d.deptno = :par_deptno
您希望将 EMPID
作为参数;为什么? EMPID
在 DEPARTMENT
table 中做什么?它只是不属于那里。所以,要么你发布的例子是错误的,要么你不太明白你在做什么,要么......其他。
[编辑,在您发表评论后]
没有多大意义,但是 - 你可以这样做(如果我明白你在说什么):
SQL> select e.deptno e_dept,
2 d.deptno d_dept,
3 d.dname,
4 e.ename
5 from emp e join dept d on e.deptno = d.deptno
6 join (select 10 params from dual) p on e.deptno = p.params
7 and d.deptno = p.params;
E_DEPT D_DEPT DNAME ENAME
---------- ---------- -------------- ----------
10 10 ACCOUNTING CLARK
10 10 ACCOUNTING KING
10 10 ACCOUNTING MILLER
SQL>
您可以使用 WITH
子句来 select 您的参数,这样您就可以在整个查询中访问它们,无论是在主查询中还是在某些子查询中:
with params as
(
select
:emp_id as emp_id,
:dept_id as dept_id
from dual
)
select ...
from . ..
where x.emp_id = (select emp_id from params)
and y.emp_id <> (select emp_id from params)
and z.dept_id = (select dept_id from params);
示例:
select * from employee, department
where
employee.empid=?
and department.empid=?
--?用于为 employee.empid 和 department.empid.
获取相同的值感谢您的回答。
嗯,您的查询似乎错误而且您的问题也没有多大意义。在我看来,你应该加入那些table并使用一个参数。例如,像这样:
select *
from employee e join department d on e.deptno = d.deptno
where d.deptno = :par_deptno
您希望将 EMPID
作为参数;为什么? EMPID
在 DEPARTMENT
table 中做什么?它只是不属于那里。所以,要么你发布的例子是错误的,要么你不太明白你在做什么,要么......其他。
[编辑,在您发表评论后]
没有多大意义,但是 - 你可以这样做(如果我明白你在说什么):
SQL> select e.deptno e_dept,
2 d.deptno d_dept,
3 d.dname,
4 e.ename
5 from emp e join dept d on e.deptno = d.deptno
6 join (select 10 params from dual) p on e.deptno = p.params
7 and d.deptno = p.params;
E_DEPT D_DEPT DNAME ENAME
---------- ---------- -------------- ----------
10 10 ACCOUNTING CLARK
10 10 ACCOUNTING KING
10 10 ACCOUNTING MILLER
SQL>
您可以使用 WITH
子句来 select 您的参数,这样您就可以在整个查询中访问它们,无论是在主查询中还是在某些子查询中:
with params as
(
select
:emp_id as emp_id,
:dept_id as dept_id
from dual
)
select ...
from . ..
where x.emp_id = (select emp_id from params)
and y.emp_id <> (select emp_id from params)
and z.dept_id = (select dept_id from params);