一、替换变量
在sqlplus中执行命令时,可以使用替换变量,使语句执行前,user可以输出不同的数据库,来执行不同的操作:
替换变量的书写格式为 &+字符串 或者 &&+字符串
例如:&1 &a &&1 &&a &&b …… 等等 【不要用特殊字符代替字符串】
&+字符串的替换变量仅仅在本次会还中有效,&&+字符串的替换变量将持续有效,
直到undefine取消为止。
下面用操作来演示一下:
下面这个表示刚建的
SQL> select * from t1;
A1 A2
---------- ----------
aaa 2
bbb 3
使用 一个&的 替换变量:
SQL> select * from &1;
Enter value for 1: t1
old 1: select * from &1
new 1: select * from t1
A1 A2
---------- ----------
aaa 2
bbb 3
下次执行语句时还需要再次输入替换变量的值:
SQL> select * from &1;
Enter value for 1: t1
old 1: select * from &1
new 1: select * from t1
A1 A2
---------- ----------
aaa 2
bbb 3
使用两个&&的替换变量,第一次需要输入替换变量的 值,第二次就不需要输入了
SQL> select * from &&1;
Enter value for 1: t1 ---第一次需要输入替换变量的值
old 1: select * from &&1
new 1: select * from t1
A1 A2
---------- ----------
aaa 2
bbb 3
SQL> select * from &&1;
old 1: select * from &&1 -- 第二次执行已经不需要输入替换变量的值了。
new 1: select * from t1
A1 A2
---------- ----------
aaa 2
bbb 3
一直到主动使用undefine 取消位置
SQL> undefine 1; --取消替换变量,我的替换变量是1
SQL> select * from &&1;
Enter value for 1: t1 --这里又要重新输入&&1的值了
old 1: select * from &&1
new 1: select * from t1
A1 A2
---------- ----------
aaa 2
bbb 3
一条语句中,出了第一个单词外,其他部分都可以用替换变量来代替;如果如下的new 这条语句语法无误,那么最后这条语句就能顺利执行。
old 1: select * from &&1 ---是你的原始sql语句
new 1: select * from t1 --是输入所有替换变量后,将要执行的语句
在执行其他命令时也可以用替换变量,但是没有如上的old new示信息
SQL> conn &q/&q
Enter value for q: xsh
Enter value for q: xsh
Connected.
二、SET命令
1、set verify on|off
上例中,使用替换变量查询时,语句执行的时候,每次都会显示如下信息:
Old ………… --你输入的原始语句
Now ………… --使用替换变量后的语句
如果不想看到该信息,可以手动关掉【默认是打开的】
SQL> set verify off --关掉显示信息
SQL> select * from &q where a2=2;
Enter value for q: t1
---这里已经old 和 new 的信息了。
A1 A2
---------- ----------
aaa 2
2、返回信息 feedback
SQL> set feedback2; ---feedback 设置为2
SQL> select * from t1;
A1 A2
---------- ----------
ccc 5
aaa 2
bbb 3
3 rows selected. ----实际返回结果大于2,会有这个提示
SQL> select * from t1 where a2=2;
A1 A2
---------- ----------
aaa 2 --只返回了一行记录,所以没有类似 “3 rows selected”的提示
如果返回的行数与feedback参数的值相等也不会有提示信息。
另外,如果处理大量数据,如无必要,最好将feedback关掉,因为这个提示信息也会耗用一定的资源:set feedback off
3、是否显示脚本的执行结果 termout
默认是打开的
SQL> show termout
termout ON
新建如下文件:/home/oracle/abc.sql
文件内容:select * from t1;
执行结果如下:
SQL> @/home/oracle/abc.sql;
A1 A2
---------- ----------
ccc 5
aaa 2
bbb 3
SQL> ----上面返回的是脚本执行的结果信息
现在讲termout关掉,再执行一次
SQL> set termout off
SQL> @/home/oracle/abc.sql;
SQL> ---这次就不返回信息了
4、是否显示标头 heading
默认是开启的
SQL> show heading;
heading ON
开启时的效果:
SQL> select * from t1;
A1 A2 -------这里就是所说的标头
---------- ----------
ccc 5
aaa 2
bbb 3
SQL>
关闭后:
SQL> set heading off
SQL> select * from t1;
--这里不显示标头了,
ccc 5
aaa 2
bbb 3
SQL>
三、格式控制 col
Col全名是column,用法如下:[]内的字符可以不写
Col a hea[ding] b --列名a 显示为b 与别名的作用相同
Col a for[mat] a10 --用A10格式来显示a列的值
Col a cle[ar] --清除所有设置在a列上的格式
Col a noprint --结果返回后不显示a列
Col a print --结果返回后重新显示a列
Col a null abc --将a列中所有的null值显示为abc
实验上面的例子很简单,这里就不再将实验结果一一贴出来了。
四、不显示某列重复的值 break on
SQL> select * from t1 ;
A1 A2
---------- ----------
aaa 6
bbb 7
ccc 5
aaa 2
bbb 3
格式化后
SQL> break on a1;
SQL> select * from t1 order by a1; --这里要加order by 才能看到效果
A1 A2
---------- ----------
aaa 6
2
bbb 7
3
ccc 5