数据库自定义函数事务锁.pptVIP

  • 1
  • 0
  • 约6.39千字
  • 约 58页
  • 2023-07-08 发布于广东
  • 举报
数据库自定义函数事务锁; 本章主要介绍SQL Server 2005的高级应用,包括用户自定义函数、实现交叉表查询、事务处理以及锁。 通过本章的学习,读者可以创建和管理用户自定义函数,可以使用PIVOT、UNPIVOT以及CASE实现交叉表查询,并了解事务处理机制和锁,应用事务和锁优化对数据的访问。;9.1 用户自定义函数 ; 创建用户自定义函数; 使用T-SQL语言创建用户自定义函数;函数可以有0个或若干个输入参数,但必须有返回值,returns后面就是设置函数的返回值类型。 用户自定义函数为标量值函数或表值函数。 如果returns子句指定了一种标量数据类型,则函数为标量值函数;如果returns子句指定TABLE,则函数为表值函数。 根据函数主体的定义方式,表值函数可分为内联函数和多语句函数。;【例7-7】为CollegeMIS数据库创建一个名为ScoreGrade的用户自定义函数,该函数用来对百分制成绩进行判断,并返回相应的等级。成绩大于等于90分时,返回的等级为“优秀”;成绩大于等于80分而小于90分时,返回的等级为“良好”;成绩大于等于70分而小于80分时,返回的等级为“中等”;成绩大于等于60分而小于70分时,返回的等级为“及格”;其它情况返回不及格。并调用该函数显示出所有选修了“0002”号课的人的成绩等级。 ;CREATE FUNCTION ScoreGrade(@Score tinyint) RETURNS varchar(8) BEGIN DECLARE @GradeStr varchar(8) SET @GradeStr= Case WHEN @Score=90 THEN 优秀 WHEN @Score=80 THEN 良好 WHEN @Score=70 THEN 中等 WHEN @Score=60 THEN 及格 ELSE 不及格 END RETURN @GradeStr END;3、调用自定义标量函数; 修改、删除用户自定义函数;【例】现在规定考试成绩低于55分为不及格,则可使用如下语句对FailureNum函数进行修改。 ;(1)通过企业管理器查看 ;4.删除自定义函数;9.2 使用SQL Server 2005实现交叉表查询 ; PIVOT和UNPIVOT的语法如下: [ FROM { table_source } [ ,...n ] ] table_source ::= {  table_or_view_name [ [ AS ] table_alias ]  pivoted_table | unpivoted_table } pivoted_table ::=table_source PIVOT pivot_clause table_alias pivot_clause ::=( aggregate_function ( value_column )  FOR pivot_column   IN ( column_list; 例如:图9.3所示的商品表就是一个典型的交叉表,其中“数量”和“月份”可以继续添加。 但是,这种格式在进行数据表存储的时候并不容易管理。; 图9.4 商品表结构; 图9.5 sp表;转换过程:上面的语句将按下面的步骤获得输出结果集。; 图9.7 使用 for 月份 in([9] , [10] , [11] , [12] )后得到的结果集 ;图9.9 使用UNPIVOT得到的结果集; 1.用PIVOT举例; 有时还需要根据表的其他字段进行交叉查询。 例如,在SP表中,按“月份”交叉查询。逐月进行聚合计算。SQL语句如下: select 商品名称,a.[9] as [九月],a.[10] as [十月],a.[11]as [十一月], a.[12]as[十二月] from sp pivot (sum(销售数量)for 月份 in([9],[10],[11],[12])) as a 实现的过程如图9.11所示。; 2.用UNPIVOT举例;图9.13 unpivot对temp2实现逆操作; 9.2.2 CASE实现交叉表查询;【例9-4】 使用CASE语句实现交叉表查询。 SQL语句如下:实现的过程如图9.14所示;图9.15 sp表按照月份交叉表查询;9.3 事 务 处 理;模拟实现转帐:使用UPDATE语句,从张三的帐户直接转帐1000 元到李四的帐户 ,两账户总额应保持不变;事务的概念及特性 ;事务的分类 ;隐性事务:通过T-SQL的 SET IMP

文档评论(0)

1亿VIP精品文档

相关文档