如何更换? 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 作为参数;为什么? EMPIDDEPARTMENT 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);