29.Oracle数据库SQL开发之 SQLPlus使用——创建简单报表
欢迎转载,转载请标明出处:http://blog.csdn.net/notbaron/article/details/49722905
可以使用变量来创建用户可以运行的脚本。
SQL*PLUS并不是专门设计报表的工具。如果需要生成复杂的报表,应该使用诸如Oracle Reports之类的软件。
1. 脚本中使用临时变量
首先执行如下:
SET ECHO OFF
SET VERIFY OFF
SELECT product_id, name, price
FROM products
WHERE product_id = &v_product_id;
其中SET VERIFY OFF命令禁止验证消息。
运行结果如下:
store@PDB1> @report1.sql
Enter value for v_product_id: 2
PRODUCT_ID NAME PRICE
---------- ----------------------------------------
2 Chemistry 30
2. 脚本中使用已定义变量
执行如下脚本:
SET ECHO OFF
SET VERIFY OFF
ACCEPT v_product_id NUMBER FORMAT 99 PROMPT 'Productid: '
SELECT product_id, name, price
FROM products
WHERE product_id = &v_product_id;
-- clean up
UNDEFINE v_product_id
执行如下:
store@PDB1> @report2.sql
Product id: 4
PRODUCT_ID NAME PRICE
---------- ----------------------------------------
4 Tank War 13.95
3. 向脚本中的变量传递值
执行如下脚本:
SET ECHO OFF
SET VERIFY OFF
SELECT product_id, name, price
FROM products
WHERE product_id = &1;
这个类似SHELL脚本,的$1变量,表示输入的第一个变量。
执行结果如下:
store@PDB1> @report3.sql 3
PRODUCT_ID NAME PRICE
---------- ----------------------------------------
3 Supernova 25.99
4. 添加页眉和页脚
TTILE和BTITLE可以向报表中添加页眉和页脚。
执行如下,脚本:
TTITLE LEFT 'Run date: ' _DATE CENTER 'Run by the 'SQL.USER ' user' RIGHT 'Page: ' FORMAT 999 SQL.PNO SKIP 2
BTITLE CENTER 'Thanks for running the report' RIGHT'Page: ' FORMAT 999 SQL.PNO
SET ECHO OFF
SET VERIFY OFF
SET PAGESIZE 30
SET LINESIZE 70
CLEAR COLUMNS
COLUMN product_id HEADING ID FORMAT 99
COLUMN name HEADING 'Product Name' FORMAT A20 WORD_WRAPPED
COLUMN description HEADING Description FORMAT A30WORD_WRAPPED
COLUMN price HEADING Price FORMAT $99.99
SELECT product_id, name, description, price
FROM products;
CLEAR COLUMNS
TTITLE OFF
BTITLE OFF
执行结果如下:
store@PDB1> @report5.sql
Run date: 07-NOV-15 Run by the STORE user Page: 1
IDProduct Name Description Price
--- -------------------------------------------------- -------
1Modern Science A description ofmodern $19.95
science
2Chemistry Introduction toChemistry $30.00
3Supernova A starexplodes $25.99
4Tank War Action movie about afuture $13.95
war
5 ZFiles Series onmysterious $49.99
activities
62412: The Return Aliens return $14.95
7Space Force 9 Adventures of heroes $13.49
8From Another Planet Alien from anotherplanet $12.99
lands on Earth
9Classical Music The best classical music $10.99
10Pop 3 The best popularmusic $15.99
11Creative Yell Debut album $14.99
12My Front Line Their greatest hits $13.49
Thanks for running the report Page: 1
12 rows selected.
5. 计算小计
BREAKON和COMPUTE命令可以结合使用,用来为列添加小计。
BREAK ON子句可以让SQL*PLUS根据列值范围分隔输出结果,COMPUTE子句可以让SQL*Plus计算一列的值。
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
执行结果如下:
store@PDB1> @report6.sql
PRODUCT_TYPE_ID NAME Price
--------------------------------------------- --------
1 Modern Science $19.95
Chemistry $30.00
*************** --------
sum $49.95
2 Z Files $49.99
TankWar $13.95
Supernova $25.99
2412:The Return $14.95
*************** --------
sum $104.88
3 Space Force 9 $13.49
FromAnother Planet $12.99
*************** --------
sum $26.48
4 Classical Music $10.99
Pop3 $15.99
CreativeYell $14.99
*************** --------
sum $41.97
MyFront Line $13.49
*************** --------
sum $13.49
12 rows selected.