Sql 无法在select语句中使用变量
我只需要在Oracle SQL中使用var作为一些值,类似这样: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中
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>