ACCEPT命令用于等待用户为变量输入一个值。
ACCEPT命令既可以将现有的变量设置为一个新值,也可以定义一个新变量。
ACCEPT variable_name [type] [FORMAT format] [PROMPT prompt] [HIDE]
type:变量类型,可以指定CHAR、NUMBER、DATE
默认为CHAR
format:指定变量的格式
prompt:提示文本,提示用户输入变量
HIDE:隐藏为变量输入的值,例如密码信息,隐藏符号为*
9i以前显示为***,10g中不显示。
-- 删除已经定义的变量。
SQL>undefine definename;
SQL> UNDEFINE v_customer_id SQL> UNDEFINE v_date SQL> UNDEFINE v_password SQL> UNDEFINE v_product_id
9、创建简单的报表
在sqlplus中可以使用临时变量或者已定义变量,这样可以创建脚本来提示用户输入一些变量,然后使用这些变量来生成一些报表。
如果需要生成复杂的报表,需要使用oracle reports之类的软件。
-- 脚本中使用accept
ACCEPT variable_name [type] [FORMAT format] [PROMAT prompt] [HIDE]
[eg]
SQL> ACCEPT v_customer_id NUMBER FORMAT 99 PROMPT 'Customer>
-- 添加页眉和页脚
TTITLE和BTITLE命令可以用来向报表中天剑页眉和页脚。
[eg]
TTITLE LEFT 'Run date:' _DATE CENTER 'Run by the ' SQL.USER ' user '
RIGHT 'Page: ' FORMAT 999 SQL.PNO SKIP 2
Run date: 12-AUG-07 Run by the HR user Page: 1
-- 计算小计
break on子句可以让sqlplus根据列值的范围分隔输出结果。
compute子句可以让sqlplus计算一列的和
两者可以结合使用
BREAK ON product_type_id
COMPUTE SUM OF price ON product_type_id
SET ECHO OFF
SET VERIFY OFF
SET PAGESIZE 50
SET LINESIZE 70
CLEAR COLUMNS
COLUMN price HEADING Price FORMAT $999.99
SELECT product_type_id,name,price
FROM products
ORDER BY product_type_id;
CLEAR COLUMNS
10、从SQL*PLUS获取帮助
SQL> HELP
SQL> HELP INDEX
SQL> help index
Enter Help [topic] for help.
@ COPY PAUSE SHUTDOWN
@@ DEFINE PRINT SPOOL
/ DEL PROMPT SQLPLUS
ACCEPT DESCRIBE QUIT START
APPEND DISCONNECT RECOVER STARTUP
ARCHIVE LOG EDIT REMARK STORE
ATTRIBUTE EXECUTE REPFOOTER TIMING
BREAK EXIT REPHEADER TTITLE
BTITLE GET RESERVED WORDS (SQL) UNDEFINE
CHANGE HELP RESERVED WORDS (PL/SQL) VARIABLE
CLEAR HOST RUN WHENEVER OSERROR
COLUMN INPUT SAVE WHENEVER SQLERROR
COMPUTE LIST SET XQUERY
CONNECT PASSWORD SHOW
11、自动生成SQL语句
现在想生成一个脚本,删除数据库中所有的表。
SQL> select 'DROP TABLE ' || table_name || ';'
2 from user_tables;
'DROPTABLE'||TABLE_NAME||';'
------------------------------------------
DROP TABLE REGIONS;
DROP TABLE LOCATIONS;
DROP TABLE DEPARTMENTS;
DROP TABLE JOBS;
DROP TABLE EMPLOYEES;
DROP TABLE JOB_HISTORY;
DROP TABLE REGIONS_COPY;
DROP TABLE BINARY_TEST;
DROP TABLE COUNTRIES;
9 rows selected.