WEB开发网
开发学院数据库DB2 DB2 9.7: 在 DB2 9.7 中使用 PL/SQL 匿名块 阅读

DB2 9.7: 在 DB2 9.7 中使用 PL/SQL 匿名块

 2009-10-16 00:00:00 来源:WEB开发网   
核心提示: 使用匿名块生成即席报告一个常见的报告需求就是将数据从多个列合并到一个字符串中,这可以通过编写带有复杂递归的纯 SQL 语句来实现,DB2 9.7: 在 DB2 9.7 中使用 PL/SQL 匿名块(5),不过,您可以使用带有动态格式化选项和简单逻辑流程的匿名块来更快地实现该目的,您可以通过使用现

使用匿名块生成即席报告

一个常见的报告需求就是将数据从多个列合并到一个字符串中。这可以通过编写带有复杂递归的纯 SQL 语句来实现。不过,您可以使用带有动态格式化选项和简单逻辑流程的匿名块来更快地实现该目的。

清单 5 显示了如何在匿名块的帮助下创建一个即席报告。清单 5 的代码获取一个包含所有从商店订购产品的客户的列表,以及上个月的所有订单的总价值。在一行显示名称,名称之间用逗号分隔。

清单 5. 在匿名块的帮助下创建即席报告

SET SERVEROUTPUT ON 
/ 
 
DECLARE 
   v_customer_names VARCHAR2(4000); 
   v_total_sales NUMBER(19,2); 
BEGIN 
   DBMS_OUTPUT.PUT_LINE('      Last Month Sales Report   '); 
 
   DBMS_OUTPUT.PUT_LINE('---------------------------------------'); 
   DBMS_OUTPUT.PUT('Customer List: '); 
   FOR row IN 
    (SELECT distinct(a.customer_id),first_name, last_name FROM customer a, orders b 
 WHERE a.customer_id=b.order_id AND b.creation_time>CURRENT DATE -1 month) 
   LOOP 
   v_customer_names := v_customer_names || '"' || row.first_name || ' ' || 
 row.last_name || '", '; 
   END LOOP; 
   IF(LENGTH(v_customer_names) > 0) THEN 
    v_customer_names := SUBSTR(v_customer_names,1, LENGTH(v_customer_names)-2); 
   ELSE 
    v_customer_names := 'None'; 
   END IF; 
   DBMS_OUTPUT.PUT_LINE(v_customer_names); 
   SELECT NVL(SUM(total_price),0) INTO v_total_sales FROM orders WHERE creation_time> 
 CURRENT DATE - 1 month; 
   DBMS_OUTPUT.PUT_LINE('---------------------------------------'); 
   DBMS_OUTPUT.PUT_LINE('Total Sales: ' || TO_CHAR(v_total_sales, '$99,999,999.99')); 
END; 
/ 
 
Output: 
 
     Last Month Sales Report   --------------------------------------- 
Customer List: "Mike Smith", "Joan Jett", "Colin Taylor", "Graham Norton", "Patsy Stone" 
--------------------------------------- 
Total Sales: $ 49,772.56 

结束语

本文介绍了以下内容:

在 DB2 9.7 中引入的 PL/SQL 匿名块特性。

匿名块的概念。

匿名块如何为过程代码的测试、原型化和问题诊断提供便利。

匿名块如何模拟应用程序的运行。

如何使用匿名块实现强大的即席报告。

在 PL/SQL 匿名块的帮助下,您可以通过使用现有的 PL/SQL 脚本,或通过使用能够在其他数据库管理系统中工作的 PL/SQL 和 SQL 语句,在 DB2 环境中快速实现 PL/SQL 解决方案。

上一页  1 2 3 4 5 

Tags:DB DB 使用

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接