本文从多个方面讲述了SQLPlus技巧。 
1.使用SQL*PLUS动态生成批量脚本 
将spool与select命令结合起来使用,可以生成一个脚本,脚本中包含有可以批量执行某一任务的语句。 
例1:生成一个脚本,删除SCOTT用户下的所有的表: 
a. 创建gen_drop_table.sql文件,包含如下语句: 
SPOOL c:\drop_table.sql 
SELECT 'DROP TABLE '|| 
table_name ||';' FROM user_tables; 
SPOOL OFF  | 
 
b. 以SCOTT用户登录数据库: 
SQLPLUS > @ …..\gen_dorp_table.sql 
c. 在c盘根目录下会生成文件drop_table.sql文件,包含删除所有表的语句,如下所示: 
SQL>SELECT 'DROP TABLE '|| table_name ||';' FROM user_tables;         
                                                      
'DROPTABLE'||TABLE_NAME||';'                   
----------------------------- 
DROP TABLE DEPT;                           
DROP TABLE EMP;                           
DROP TABLE PARENT;                         
DROP TABLE STAT_VENDER_TEMP;               
DROP TABLE TABLE_FORUM;                                                    
5 rows selected:SQL> SPOOL OFF。  | 
 
d. 对生成的drop_table.sql文件进行编辑去掉不必要的部分,只留下drop table …语句 
e. 在scott用户下运行dorp_table.sql文件,删除scott用户下所有的表。SQLPLUS > @ c:\dorp_table.sql。 
在上面的操作中,在生成的脚本文件中会有多余的字符,如运行的SQL语句,标题,或返回的行数,需要我们编辑该脚本后再运行,给实际的操作带来诸多不便。懒惰是人的本性,这促使我们用更简单的办法来实现上面的任务。 
a. 创建gen_drop_table.sql文件,包含如下语句: 
set echo off
set feedback off
set newpage none
set pagesize 5000
set linesize 500
set verify off
set pagesize 0
set term off
set trims on
set linesize 600
set heading off 
set timing off
set verify off
set numwidth 38
SPOOL c:\drop_table.sql 
SELECT 'DROP TABLE '|| table_name ||';' FROM user_tables; 
SPOOL OFF  | 
 
b. 以SCOTT用户登录数据库:SQLPLUS > @ …..\gen_dorp_table.sql。 
c. 在c盘根目录下会生成文件drop_table.sql文件,包含删除所有表的语句,如下所示: 
DROP TABLE DEPT;                           
DROP TABLE EMP;                           
DROP TABLE PARENT;                         
DROP TABLE STAT_VENDER_TEMP;               
DROP TABLE TABLE_FORUM;  | 
 
d. 在scott用户下运行dorp_t: 
able.sql文件,删除scott用户下所有的表。SQLPLUS > @ c:\dorp_table.sql