Sql 无法在select语句中使用变量

Sql 无法在select语句中使用变量,sql,oracle,oracle-sqldeveloper,Sql,Oracle,Oracle Sqldeveloper,我只需要在Oracle SQL中使用var作为一些值,类似这样: date = '21-Sep-10' SELECT * FROM ( SELECT * FROM table2 WHERE some_date = date ) table1 WHERE table1.due_date = date; 我怎样才能正确地做到这一点 谢谢 这取决于您使用的工具。在SQL*Plus中

我只需要在Oracle SQL中使用var作为一些值,类似这样:

    date = '21-Sep-10'

    SELECT * 
    FROM (
          SELECT * 
          FROM  table2
          WHERE some_date = date 
         ) table1
    WHERE table1.due_date = date;
我怎样才能正确地做到这一点


谢谢

这取决于您使用的工具。在SQL*Plus中,您可以在它前面加上
&

SELECT * FROM table WHERE id = &tmp;
在其他一些工具(SQLDeveloper,TOAD)中,这将是

SELECT * FROM table WHERE id = :tmp;

如果在同一查询中多次使用同一变量,请在其前面加两个符号:

SQL> set linesize 200
SQL> set ver off
SQL> select *
  2  from (select *
  3        from emp
  4        where deptno = &&deptno
  5       )
  6  where deptno = &&deptno;

     EMPNO ENAME      JOB              MGR HIREDATE        SAL       COMM     DEPTNO
---------- ---------- --------- ---------- -------- ---------- ---------- ----------
      7782 CLARK      MANAGER         7839 09.06.81       2450                    10
      7839 KING       PRESIDENT            17.11.81       5000                    10
      7934 MILLER     CLERK           7782 23.01.82       1300                    10

SQL>
但是,如果再次运行相同的查询,则不会提示您输入变量(因为它是“记住的”):

您需要先取消定义它:

SQL> undefine deptno
SQL> /
Enter value for deptno: 20

     EMPNO ENAME      JOB              MGR HIREDATE        SAL       COMM     DEPTNO
---------- ---------- --------- ---------- -------- ---------- ---------- ----------
      7369 SMITH      CLERK           7902 17.12.80        800                    20
      7566 JONES      MANAGER         7839 02.04.81       2975                    20
      7788 SCOTT      ANALYST         7566 09.12.82       3000                    20
      7876 ADAMS      CLERK           7788 12.01.83       1100                    20
      7902 FORD       ANALYST         7566 03.12.81       3000                    20

SQL>

,谢谢你的回答。你的方法与promt条件有关。我已经修改了示例,请看一看。我需要在一个select语句中多次使用var。SQL Developer支持替换(&var)和绑定(:var)。不客气,ppostnov。我添加了更多的例子;请看一看是的,杰夫,我知道,谢谢你纠正我。
SQL> undefine deptno
SQL> /
Enter value for deptno: 20

     EMPNO ENAME      JOB              MGR HIREDATE        SAL       COMM     DEPTNO
---------- ---------- --------- ---------- -------- ---------- ---------- ----------
      7369 SMITH      CLERK           7902 17.12.80        800                    20
      7566 JONES      MANAGER         7839 02.04.81       2975                    20
      7788 SCOTT      ANALYST         7566 09.12.82       3000                    20
      7876 ADAMS      CLERK           7788 12.01.83       1100                    20
      7902 FORD       ANALYST         7566 03.12.81       3000                    20

SQL>