替代变量

说白了就是用键盘 输入变量

select ename, job, sal ,hiredate 
from emp 
where sal>&inputsal;

 

还可以输入字符串

select empno, ename, job ,hiredate ,sal
from emp 
where ename=&inputename;

 

最好是这样写:

select empno, ename, job ,hiredate ,sal
from emp 
where ename=&inputename‘;

 

你会考虑大小写问题吗?

select empno, ename, job ,hiredate ,sal
from emp 
where ename=UPPER(’&inputename‘);

 

一般,只要不考虑大小写的系统,几乎都是将输入的数据全部 统一变为大写或小写。

范例:根据雇员姓名的关键字(由雇员)

select empno, ename, job ,hiredate ,sal
from emp 
where ename like '%&inputkeyword%'

 

日期型的数据

select empno,ename ,job,hiredate , sal from emp
where hiredate <to_date('&inputhirdate','yyyy-mm-dd')

 

两个替代变量

select empno,ename ,job,hiredate , sal from emp
where job=UPPER('&inputjob')
AND sal>&inputsal

 

下面来替代变量的详细说明:
在之前只是在where子句之中使用替代变量,但是在SQL的

select *
from emp
where deptno=&inputDeptno;

 

变量查表

select * 
from &inputTableName;

 

 

在oracle by子句中,

select empno,ename, job, hiredate , sal
from emp
where deptno=20
order by &inputOrderByColumn DESC

 

 

在group by 子句中使用替代变量

select &inputGroupByColumn,sum(sal) 
from emp
group by &inputGroupByColumn

 

 

定义替代变量
如果不希望输入“&&”可以使用define命令定义。

 

定义一个替代变量
DEFINE inputdname='ACCOUNING'

 

ACCEPT指令:
可以指定替代变量的提示信息。
如果现在要想使用ACCEPT指令,那么必须结合脚本文件完成。

 

这个操作形式,为了方便起见。

ACCEPT inputEname PROMPT '请输入要查询信息的雇员姓名:'
SELECT empno,ename, job ,hiredate , sal from emp 
where ename=UPPER('&inputEname')

 


将上面三条语句,保存到文件夹,以.sql保存,
在命令窗口,输入"@d:\QQQ.sql"
就会执行文件里的sql语句。

 

ACCEPT inputGroupBYcolumn PROMPT '请输入要分组的字段:'
SELECT empno,sum(sal)
from emp 
GROUP BY &inputGroupBYcolumn

 


这个可以根据字段分组

加hide就可以隐藏你的sql语句:

ACCEPT inputGroupBYcolumn PROMPT '请输入要分组的字段:' hide
SELECT empno,sum(sal)
from emp 
GROUP BY &inputGroupBYcolumn

 

 

ACCEPT inputGroupBYcolumn PROMPT '请输入要分组的字段:' FORMAT a10
SELECT empno,sum(sal)
from emp 
GROUP BY &inputGroupBYcolumn

 

 

此时只能输入10个长度的数据

控制日期的输入:

ACCEPT inputDate DATE FORMPT 'YYYY-MM-DD'
prompt '请输入要查询的日期:'
select empno ,ename, job , hiredate 
from emp 
where hiredate=to_date('&inputDate','yyyy-mm-dd')