29 Oracle数据库SQL开发之 SQLPlus使用——创建简单报表

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.

 

 

 

 

 

再分享一下我老师大神的人工智能教程吧。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!http://www.captainbed.net

猜你喜欢

转载自www.cnblogs.com/swncz/p/10443620.html
29