12.1 自含式方式中的编程
在9.2.2中已介绍了SQL自含式方式中的两种语言,它们是ISO SQL的SQL/PSM以及SQL Server 2000中的T-SQL,在本章中我们主要介绍T-SQL的编程。
一般讲,T-SQL是一种完整的程序设计语言,它可以独立编程,将传统语言中的控制部分与SQL中的基本操作、游标及诊断等相结合,形成一种完整的自含式数据库语言,它目前已替代传统的嵌入式语言成为数据库应用中最为常见的一种编程语言。
T-SQL的特点是利用游标与诊断语句以建立传统程序设计语言与SQL间的接口,从而解决两者数据不一致的问题,即SQL中数据的集合量与传统语言数据的标量间的转换。
T-SQL编程的一般步骤如下:
(1)首先,用DECLARE作变量声明;
(2)然后,定义游标并打开之;
(3)接着,用T-SQL编程,在其间当作数据交换时,用FETCH获取数据并用全局变量@@FETCH_STATUS以获取诊断信息;
(4)最后,在编程结束后用CLOSE及DEALLOCATE语句关闭游标。
T-SQL主要用于存储过程、函数编程以及数据库后台编程中。下面就以两个示例来介绍采用游标进行数据访问和处理的T-SQL编程应用。
教师工资清单:姓名、职称、时间(年、月)、基本工资、职称补贴、扣工会会费、扣税费、应发合计、应扣合计、实发工资。
其中职称补贴:教授1000元、副教授800元、讲师及以下500元;税费:2000元以下0%、2000~4000 元5%、4000~8000元8%、8000元以上10%;工会会费:20元(固定)。
教师工资的表结构teacher设计如图12.1:
在该表中前六项数据均已存在,需计算后五项的数据(即税费、职称补贴、应发合计、应扣合计、实发工资),其工资清单的原始数据如图12.2所示:
图12.1 教师工资表结构
图12.2 工资清单原始数据
创建存储过程GetSalary,实现从teacher表中读取相应数据,按照要求进行计算处理,并将所得结果回填入表中。
进行教师工资计算时,应用程序可以使用EXECUTE GetSalary语句来调用GetSalary存储过程,调用后,获得结果如图12.3所示:
图12.3 计算后的工资清单
例12.2 编制一个计算职工年终奖金的存储过程,计算需求如下:
计算公式:月基本工资*12*15%*系数-(病事假天数*50元),其中系数:处级1、科级0.8、科员0.5、工人0.4。
奖金表结构salary设计如图12.4:
在该表中前四项数据已存在,需计算后一项数据(即年度奖金),其奖金清单的原始数据如图12.5所示:
图12.4 奖金表结构
图12.5 奖金清单原始数据
创建存储过程GetYearBonus,实现从salary表中读取相应数据,按照年终奖金计算公式进行计算处理,并将所得结果回填入表中。
需要计算工资时,可以运行语句EXECUTE GetYearBonus调用GetYearBonus存储过程,其调用结果如图12.6所示:
图12.6 计算后的工资清单
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。