一、自定义变量
使用DEFINE命令定义变量
定义一个变量
sql> define deptname = sales
清空一个变量的定义
sql> undefine deptname
使用自己的定义的变量
sql> select *
from dept
where dname = upper('&DEPTNAME');
注意:一个变量将保持在被定义的状态,直到:
使用 UNDEFINE 命令将它清除
离开 SQL*Plus
可以用DEFINE 命令验证所做的改变.
如果要定义在每一次会话中都要用到的变量, 改变login.sql 文件,这样在每一次启动时,变量就创建了.
二、输入变量
&变量替换
SELECT empno, ename, sal, deptno
FROM emp
WHERE empno = &employee_num;
Enter value for employee_num: 7369
EMPNO ENAME SAL DEPTNO
--------- ---------- --------- ---------
7369 SMITH 800 20
显示用某个具体值替换变量名之前和之后的命令文本
SQL> SELECT empno, ename, sal, deptno
FROM emp
WHERE empno = &employee_num;
Enter value for employee_num: 7369
old 3: WHERE empno = &employee_num
new 3: WHERE empno = 7369
使用单引号标志替换变量中的日期和字串值
SQL> SELECT ename, deptno, sal*12
FROM emp
WHERE job='&job_title';
Enter value for job_title: ANALYST
ENAME DEPTNO SAL*12
---------- --------- ---------
SCOTT 20 36000
FORD 20 36000
运行时指定列名、表达式、文本
SQL> SELECT empno, ename, job, &column_name
FROM emp
WHERE &condition
ORDER BY &order_column;
Enter value for column_name: sal
Enter value for condition: sal>=3000
Enter value for order_column: ename
EMPNO ENAME JOB SAL
--------- ---------- --------- ---------
7902 FORD ANALYST 3000
7839 KING PRESIDENT 5000
7788 SCOTT ANALYST 3000
使用带有两个&的变量可以使得该变量可以重复使用,而不必在每次使用时提醒用户输入
SQL> SELECT empno, ename, job, &&column_name
FROM emp
ORDER BY &column_name;
Enter value for column_name: deptno
EMPNO ENAME JOB DEPTNO
--------- ---------- --------- ---------
7839 KING PRESIDENT 10
7782 CLARK MANAGER 10
7934 MILLER CLERK 10
当接收用户输入时,创建可定制的用户提示
ACCEPT dept PROMPT 'Provide the department name: '
SELECT *
FROM dept
WHERE dname = UPPER('&dept')
/
Provide the department name: Sales
DEPTNO DNAME LOC
--------- -------------- -------------
30 SALES CHICAGO
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/20844861/viewspace-591984/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/20844861/viewspace-591984/