您的位置:首页 > 数据库 > Oracle

Oracle---替代变量

2011-07-15 14:47 260 查看
替代变量1. & + 变量名 存为脚本文件后,每次遇到相似的问题,运行脚本文件,输入不同的变量值就可以了。
如:SQL> selectempno,ename,job,sal
2 from emp
3 where sal > &salary;
输入 salary 的值: 1500
2. 想查看原值和新值 SET VERIFY ON
如:
SQL> setverify on
SQL> L
1 select empno,ename,job,sal
2 fromemp
3* where sal > &salary
SQL> @D:\sql
输入 salary 的值: 2000
原值 3: where sal >&salary
新值 3: where sal > 2000

EMPNO ENAME JOB SAL
-------------------- --------- ----------
7566 JONES MANAGER 2975
7698 BLAKE MANAGER 2850
7782 CLARK MANAGER 2450
7788 SCOTT ANALYST 3000
7839 KING PRESIDENT 5000
7902 FORD ANALYST 3000

已选择6行。

3. 字符型和日期型替代变量
SQL> L
1 select empno,ename,sal,job,deptno
2 fromemp
3* where job = &v_job
当输入CLERK时 提示出错
需要输入’CLERK’ 把单引号带上才正确
为了用户的方便 可以吧 3行改为:where job = '&v_job'
select *
from emp
where hiredate ='&date';
4. 以&&开始的替代变量
SQL> selectempno,&&v_col
2 fromemp
3 order by &v_col
4 ;
输入 v_col 的值: sal
原值 1: selectempno,&&v_col
新值 1: select empno,sal
原值 3: order by &v_col
新值 3: order by sal

EMPNO SAL
--------------------
7369 800
7900 950
7876 1100
7521 1250
7654 1250
7934 1300
7844 1500
7499 1600
7782 2450
7698 2850
7566 2975

EMPNO SAL
--------------------
7788 3000
7902 3000
7839 5000

已选择14行。
当再次运行这段脚本的时候,不会再提示你输入,直接出现和上面一样的结果。这是因为Oracle系统已经记住了第一次输入的值。必须使用 undefined 语句来取消这个变量。
5. 替代变量可以出现的地方:
l SELECT 子句中
l ORDER BY 子句中
l WHERE 子句中 (替代变量甚至可以替代整个的条件表达式)
l 任何可以使用到列或表达式的地方。
l 表名出现的地方
l 整个的查询语句
6. 使用DEFINE定义替代变量
DEFINE 替代变量名 = 变量值
显示一个替代变量的相关信息。
DEFINE 替代变量名
7. 使用ACCEPT定义替代变量
ACCEPT 变量名 [数据类型][FORMAT 格式化模式][PROMPT 正文][HIDE]
l 变量名:存储输入值的变量名。如果该变量不存在,SQL*Plus会自动创建它。
l 数据类型:为数字型、日期型、字符型
l FORMAT 格式化模式:如99999,999.00 A8等
l PROMPT 正文:在用户可以输入变量的值之前系统的提示信息。
l HIDE:系统不显示用户的输入值,如口令(PASSWORD).
另外值得注意的是,在ACCEPT关键字之后的替代变量之前不能加&符号,但该替代变量被引用时在其前面要加&符号。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: