values (cCustId; "Paid in Full"; null; null);
end if;
end loop;
close payment_cursor;
EXCEPTION
when AmtZero then
DBMS_OUTPUT。put_line("ERROR: amount is Zero。 See your supervisor。");
when OTHERS then
DBMS_OUTPUT。put_line("ERROR: unknown error。 See the DBA");
END;
END;
/
398
…………………………………………………………Page 399……………………………………………………………
SQL 21 日自学通(V1。0) 翻译人 笨猪
分析
DECLARE 部分定义了六个局部变量 与被称为payment_cursor 指针一样 PROCEDURE
从第二个 BEGIN 语句开始并先打开了这个游标并开始循环 而 FETCH 命令则将当前指针
所指向的记录的内容存入在 DECLARE 部分定义的变量中 当在指针中发现记录以后 语
句会将客户的支付与他应付的总数进行比较 根据支付的的数量来计算已付款的人数和未
付款的人数 然后将计算过的数据插入到 PAY_STATUS_TABLE 表中 当循环终止以后
关闭指针 异常用于处理在这一部分可以发生的错误
现在 我们来运行一个这个脚本看一个他的结果
INPUT:
SQL》 @block1
OUTPUT:
Input truncated to 1 characters
ERROR: amount is Zero。 See your supervisor。
PL/SQL procedure successfully pleted。
现在看来你在应得总数上有一个数值是不正确的 你应该修正这个数量然后再运行脚
本
输入/输出
SQL》 update payment_table set total_due = 26。75 where cust_id = "HHH";
1 row updated。
SQL》 mit;
mit plete。
SQL》 truncate table pay_status_table;
Table truncated。
注 在上例中我们清除了 pay_status_table 中的内容 在下一次运行这个语句块时表将会被
重新写入 你也许会想把清除语句也加入到语句块中吧
输入/输出
SQL》 @block1
Input truncated to 1 characters
PL/SQL procedure successfully pleted。
399
…………………………………………………………Page 400……………………………………………………………
SQL 21 日自学通(V1。0) 翻译人 笨猪
现在你可以对 PAY_STATUS_TABLE 表执行 SELECT 语句 看一下每一个客户的支付
情况
输入/输出
SQL》 select * from pay_status_table order by status;
CUSTOMER STATUS AMT_OWED AMT_CREDIT
FFF OverPaid 100。00
AAA PaidinFull
CCC PaidinFull
EEE PaidinFull
GGG PaidinFull
HHH PaidinFull
ABC StillOwes 60。49
DDD StillOwes 150。95
BBB StillOwes 50。00
分析
从 PAYMENT_TABLE 获得的数据中有一行被插入到了 PAY_STATUS_TABLE 表中
如果用户的付款金额比应付金额更多 那么差额将会被输入到 AMT_CREDIT 列中 如果
用户的支付金额少于应付金额 那么将会在 AMT_OWED 中输入一个信息 如果客户已经
全部支付完毕 那么这两列中就不会有任何数据
又一个程序
在这个例子中使用的表叫 PAY_TABLE
输入
SQL》 desc pay_table
输出
Name Null? Type
NAME NOT NULL VARCHAR2(20)
PAY_TYPE NOT NULL VARCHAR2(8)
PAY_RATE NOT NULL NUMBER(8;2)
EFF_DATE NOT NULL DATE
PREV_PAY NUMBER(8;2)
先来看一下数据
400
…………………………………………………………Page 401……………………………………………………………
SQL 21 日自学通(V1。0) 翻译人 笨猪
输入
SQL》 select * from pay_table order by pay_type; pay_rate desc;
输出
NAME PAY_TYPE PAY_RATE EFF_DATE PREV_PAY
SANDRA SAMUELS HOURLY 12。50 01…JAN…97
ROBERT BOBAY HOURLY 11。50 15…MAY…96
KEITH JONES HOURLY 10。00 31…OCT…96
SUSAN WILLIAMS HOURLY 9。75 01…MAY…97
CHRISSY ZOES SALARY 50000。00 01…JAN…97
CLODE EVANS SALARY 42150。00 01…MAR…97
JOHN SMITH SALARY 35000。00 15…JUN…96
KEVIN TROLLBERG SALARY 27500。00 15…JUN…96
现实情况 由于销售情况很好 你需要给为你工作的时间超过了六个月的个人增加薪
金 符合条件的钟点工的薪金增加 4% 而符全条件的雇员的薪金需要增加 5%
今天的日期是
输入/输出
SQL》 select sysdate from dual
SYSDATE
20…MAY…97
在对下边的 PL/SQL 语句块进行检查之前 我们要对 PAY_TABLE 表进行手工的选择
以找出都有哪些人需要增加薪金
输入
SQL》 select name; pay_type; pay_rate; eff_date;
2 "YES" due
3 from pay_table
4 where eff_date 《 sysdate 180
5 UNION ALL
6 select name; pay_type; pay_rate; eff_date;
7 "No" due
8 from pay_table
9 where eff_date 》= sysdate 180
小说推荐
- SQL语言艺术(PDF格式)
- -Page 1-SQLSSQQLL语言艺术内容介绍本书分为12章,每一章包含许多原则或准则,并通过举例的方式对原则进行解释说明。这些例子大多来自于实际案例,对九种SQL经典查询场景以及其性能影响讨论,非常便于实践,为你数据库应用维护人员阅读。资深 SQL 专家 Stéphane Faroult倾力打
- 最新章:第27章
- oracle从入门到精通(PDF格式)
- -Page 1-Oracle 从入门到精通-Page 2-资源来自网络,仅供学习 Oracle 从入门到精通一、SQL 8
- 最新章:第37章
- VB2008从入门到精通(PDF格式英文版)
- -Page 1(R)The eXperT’s Voice inBeginningVB 2008From Novice to ProfessionalChristian Gross-Page 2-Page 3-Beginning VB 2008From Novice to Professional■C
- 最新章:第214章
- C语言游戏编程从入门到精通(PDF格式)
- -Page 1-Page 2-Page 3-Page 4-Page 5-Page 6-Page 7-Page 8-Page 9-Page 10-Page 11-Page 12-Page 13-Page 14
- 最新章:第4章
- JMS简明教程(PDF格式)
- -Page 1-JMS1.1规范中文版卫建军2007‐11‐22-Page 2
- 最新章:第28章
- C语言实例教程(PDF格式)
- -Page 1-前 言Visual C+是开发运行于Windows 95和Windows NT环境下的Win32应用程序的可视化编程工具中最重要的成员之一,它为软件开发人员提供了完整的编辑、编译和调试工具和建立于Win32 API(ApplicationProgramming Interface)基
- 最新章:第143章
- 深入浅出MFC第2版(PDF格式)
- -Page 1-Page 2-山高月小山高月小 水落石出水落石出山高月小山高月小 水落石出水落石出-Page 3-深入淺出MFC(第版 使用Visual C 5.0 MFC 4.2)Dissecting MFC(Second Edition Using Visual C 5.0 MFC 4.2)侯俊
- 最新章:第309章
- 软件工程实践者的思想(PDF格式)
- -Page 1-大 道 至 简—软件工程实践者的思想周爱民(Aimingoo 著-Page 2-序2004 年 11 月初爱民(Aimingoo)第一次把他的书稿给我,我翻看了一下,第一反应讲的是感想。这不错,在技
- 最新章:第26章
- 电子电路大全(PDF格式)
- -Page 1-电力生产人员技能培训电路基础部分电路基础部分电电路路基基础础部部分分-Page 2-一、电路的基本概念和基本定律-Page 3-考试点1o 1、掌握电阻、独立电压源、独立电流源、11受控源、电容、电感、耦合电感、理想变压器诸元件的定义、性质2o 2、掌握电流、电压参考方向的概念223
- 最新章:第353章