第11章函数数据库允许用户编写自定义方便业务逻辑实现可重用性_第1页
第11章函数数据库允许用户编写自定义方便业务逻辑实现可重用性_第2页
第11章函数数据库允许用户编写自定义方便业务逻辑实现可重用性_第3页
第11章函数数据库允许用户编写自定义方便业务逻辑实现可重用性_第4页
第11章函数数据库允许用户编写自定义方便业务逻辑实现可重用性_第5页
免费预览已结束,剩余30页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第11章函数函数和存储过程类似,SQLServer2005数据库允许用户编写自定义函数,方便业务逻辑的实现业务逻辑的可重用性;同时SQLServer2005数据库也提供了许多内置函数供用户使用。11.1函数概述函数是使用零个、一个或多个输入值,返回一个数据值或表格(SQLServer2005数据库增加了表值函数)形式的一组值。函数的概念在许多计算机语言中都有体现,使用函数可以提高开发效率和程序的运行效率。11.1.1函数的结构函数由两部分组成:函数头和函数体。函数可接受零个或多个输入参数,返回数据值或表。函数的这种结构在函数定义的过程体现出来。11.1.2函数的类型SQLServer2005数据中可以有多种函数,根据返回值的类型和是否由系统提供,为标量函数、表值函数、和内置函数。其中标量函数又分为内联标量函数、多语句标量函数;表值函数又分为内联表值函数和内置函数。11.1.3使用函数的优点函数实现了模块化的程序设计,只需创建一次函数并将其存储在数据库中,用户便在需要的时候可以随时调用,用户定义函数可以独立于程序源代码进行修改。由于以上的原因,函数具有如下优点:执行速度更快。与存储过程相似,T-SQL用户定义函数通过缓存计划并在重复执行时重用它来降低T-SQL代码的编译开销,这意味着每次使用用户定义函数时均无需重新解析和重新优化,从而缩短了执行时间。函数还可以实现减少网络流量,可以减少发送至客户端的数字或行数。11.2设计用户定义函数用户根据实际的工作需要,可以设计自己的自定义函数,从而提高开发和运行质量。用户定义函数的建立要求遵循一定的标准,以实现更好的设计。11.2.1选择函数类型设计用户定义函数时,首先要确定最适合业务需要的函数类型。函数是否返回一个单个的值、一个表(多行)、执行一个复杂的计算或者访问SQLServer数据库,在确定函数的业务类型以后,用户才能够根据需要使用T-SQL或.NETFramework编写函数。11.2.2函数与存储过程实现相似的功能,用户可以使用函数,也可以使用存储过程,选择哪一种方式是本节讨论的问题。用户可以将现有存储过程逻辑重写为用户定义函数。函数在编写和执行时较存储过程有着更多的优势。11.3创建用户定义函数SQLServer2005数据库提供了用户定义函数的功能,用户可以根据需要,编写符合业务逻辑的函数。创建用户定义函数将帮助用户更加灵活的进行数据和业务逻辑的处理。11.3.1在SQLServerManagementStudio中建立用户自定义函数用户可以使用SQLServerManagementStudio工具,改写模板代码来建立函数,具体操作过程参考如下步骤。(具体内容请参照书。)11.3.2用CREATEFUNCTION语句创建函数用户使用CREATEFUNCTION创建用户定义函数,要求用户熟悉其语法结构。11.3.1节中演示了使用SQLServerManagementStudio工具的模板生成代码,改写代码的过程,本节将讲述代码的具体用法。(具体内容请参照书。)11.4执行用户定义函数函数使用户更容易的重用编写代码,执行函数非常的方便,只需要指名函数名和参数即可,前面的11.3节中建立用户定义函数的过程,已经演示了一些小的执行用户定义函数例子,本节将详细讲述执行函数的操作。11.4.1执行的位置用户定义函数作为数据库对象存储,可在以下的位置使用。在T-SQL语句中, 在调用该函数的应用程序中在另一个用户定义函数的定义中, 用于参数化视图或改进索引视图的功能。用于在表中定义列,如使用newid()设置列的默认值。 用于为列定义CHECK约束。用于替换存储过程。11.4.2执行用户定义函数的例子示例:以下示例使用T-SQL代码执行函数getdate(),可以参考如下步骤。(具体内容请参照书。)11.5删除用户定义函数用户可以删除用户定义函数,但不能删除系统函数。本节将讲述删除用户定义函数的语法和具体操作。11.5.1在SQLServerManagementStudio中删除用户定义函数使用SQLServerManagementStudio工具删除函数,参考步骤如下。(具体内容请参照书。)11.5.2用DROPFUNCTION语句删除用户定义函数本节将讲述使用DROPFUNCTION语句删除用户定义函数的语法和具体操作。1.DROPFUNCTION的语法2.删除函数的示例(具体内容请参照书。)11.6常用系统函数SQLServer2005数据库提供了丰富的系统函数,用户可以使用这些内嵌的函数进行数据的处理、数据表的操作、数据库的管理等,本节列出系统提供的函数,并对选取常用的函数,编写例程说明其使用方式。11.6.1聚合函数聚合函数对一组值执行计算,并返回单个值。例如前面章节中使用过的AVG(求平均值函数)、SUM(求各函数)等均为此类函数。除了COUNT以外,聚合函数都会忽略空值。聚合函数经常与SELECT语句的GROUPBY子句一起使用,所有聚合函数均为确定性函数(即只要使用一组特定输入值调用聚合函数,该函数总是返回相同的值)。1.使用AVG函数AVG函数用于返回组中各值的平均值(空值将被忽略)。(具体内容请参照书。)2.使用SUM函数SUM函数用于返回表达式中所有值的和或仅非重复值的和,SUM只能用于数字列(空值将被忽略)。(具体内容请参照书。)3.T-SQL提供聚合函数T-SQL提供聚合函数如表(具体内容请参照书。)11.6.2配置函数配置函数一般用于返回系统的配置信息。1.使用@@VERSION函数2.使用@@LANGUAGE函数3.配置函数说明11.6.3游标函数表11.3显示了SQLServer2005数据库的游标函数,用于返回有关游标的信息,所有游标函数都是非确定性的。关于游标函数的使用在第9章中已经有了比较详细的使用说明。(具体内容请参照书。)11.6.4日期和时间函数日期和时间函数对日期和时间输入值执行操作,并返回一个字符串、数字值或日期和时间值。1.使用GETDATE函数2.日期和时间函数说明11.6.5数学函数数学函数在日常的会经常的使用,许多业务计算都涉及他们。算术函数(例如ABS、CEILING、DEGREES、FLOOR、POWER、RADIANS和SIGN)返回与输入值具有相同数据类型的值。三角函数和其他函数(包括EXP、LOG、LOG10、SQUARE和SQRT)将输入值转换为float并返回float值。除RAND以外的所有数学函数都为确定性函数。11.6.6元数据函数元数据函数用于返回有关数据库和数据库对象的信息,这些函数获取的信息涉及数据库的底层结构信息。例如用户在删除某一数据对象前可以使用OBJECT_ID函数判断其是否存在于数据库中。11.6.7排名函数排名函数为分区中的每一行返回一个排名值,根据所用的函数,某些行可能与其他行接收到相同的值,(具体内容请参照书。)11.6.8行集函数行集函数将返回一个可用于代替T-SQL语句中表引用的对象,所有行集函数都具有不确定性。行集函数将在第24章进行比较详细的说明。11.6.9安全函数函数返回对管理安全性有用的信息。1.使用USER_NAME函数USER_NAME函数用于返回用户的登录标识名。11.6.10字符串函数字符串函数对字符串输入值执行操作,并返回字符串或数值。11.6.11系统函数SQLServer2005数据库提供了系统级的消息函数,他们对SQLServer2005中的值、对象和设置进行操作并返回有关信息。11.6.12系统统计函数系统统计函数返回系统的统计信息,所有的系统统计函数都具有不确定性。11.6.13文本和图像函数SQLServer2005数据库增强了对图像等大对象的处理功能。文本和图像函数可对文本或图像输入值或列执行操作,并返回有关该值的信息,(具体内容请参照书。)11.7创建CLR函数在SQLServer2005中,可以在SQLServer中使用以下方法创建数据库对象:基于Microsoft.NETFramework公共语言运行时(CLR)中创建的程序集,使用编程方法创建。可以充分利用公共语言运行时,所提供的丰富的编程模式的数据库对象包括聚合函数、函数、存储过程、触发器以及类型。11.7.1创建CLR函数的一般步骤与存储过程一样,CLR函数的创建一般要经历如下步骤。使用.NETFramework支持的语言将函数定义为类的静态方法。然后,使用适当的语言编译器编译该类,在.NETFramework中生成程序集。使用CREATEASSEMBLY语句在SQLServer中注册程序集。通过使用CREATEFUNCTION语句创建引用注册程序集的函数。11.7.2使用CLR函数的优点用户可以使用CLR函数访问外部资源,例如文件、网络资源、Web服务及其他数据库(包括SQLServer远程实例),这可以通过使用.NETFramework中的各种类(例如System.IO、System.WebServices及System.Sql等)来实现。用户也可以使用

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论