11第11章用户自定义函数教程范本.ppt

  1. 1、本文档共46页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第11章 用户自定义函数设计 ;11.1 用户自定义函数概述 ;11.1 用户自定义函数概述; 可使用CREATE FUNCTION语句创建、使用ALTER FUNCTION语句修改、以及使用DROP FUNCTION语句除去用户定义函数。每个完全合法的用户定义函数名必须唯一。 必须被授予CREATE FUNCTION权限才能创建、修改或除去用户定义函数。不是所有者的用户在Transact-SQL语句中使用某个函数之前,必须先给此用户授予该函数的适当权限。若要创建或更改在CHECK约束、DEFAULT子句或计算列定义中引用用户定义函数的表,还必须具有函数的REFERENCES权限。 ; ; 标量型函数(Scalar functions) 标量型函数返回在RETURNS子句中定义的类型的单个数据值。可以使用所有标量数据类型,包括bigint和sql_variant。不支持timestamp数据类型、用户定义数据类型和非标量类型(如table或cursor)。在BEGIN...END块中定义的函数主体包含返回该值的 Transact-SQL语句系列。返回类型可以是除text、ntext、image、cursor、timestamp和table 之外的任何数据类型。 ; 内嵌表值型函数(Inline table-valued functions) 内嵌表值型函数以表的形式返回一个返回值,即它返回的是一个表。内嵌表值型函数没有由BEGIN-END语句括起来的函数体。其返回的表由一个位于RETURN子句中的SELECT命令段从数据库中筛选出来。内联表值型函数功能相当于一个参数化的视图。 ;多语句表值型函数 (Multi-statement table-valued functions);函数中的有效语句类型包括: (1)DECLARE语句,该语句可用于定义函数局部的数据变量和游标。 (2)为函数局部对象赋值,如使用SET给标量和表局部变量赋值。 (3)游标操作,该操作引用在函数中声明、打开、关闭和释放的局部游标。不允许使用FETCH语句将数据返回到客户端。仅允许使用FETCH语句通过INTO子句给局部变量赋值。 (4)控制流语句。 (5)SELECT语句,该语句包含带有表达式的选择列表,其中的表达式将值赋予函数的局部变量。 (6)INSERT、UPDATE和DELETE语句,这些语句修改函数的局部table变量。 (7)EXECUTE语句,该语句调用扩展存储过程。 ;11.2 创建用户定义函数 ; 参数说明:; 参数说明:;; ;创建多语句表值型函数 (Multi-statement table-valued functions): CREATE FUNCTION [ owner_name.] function_name ( [ { @parameter_name [AS] scalar_parameter_data_type [ = default ] } [ ,...n ] ] ) RETURNS @return_variable TABLE table_type_definition [ WITH function_option [ [,] ...n ] ] AS BEGIN function_body RETURN END 说明: function_option ::= { ENCRYPTION | SCHEMABINDING } table_type_definition ::= ( { column_definition | table_constraint } [ ,...n ] ) ; function_body:指定一系列Transact-SQL语句定义函数的值, 这些语句合在一起不会产生副作用。function_body只用于标量型函数和多语句表值型函数。在标量型函数中,function_body是一系列合起来求得标量值的Transact-SQL语句。在多语句表值型函数中,function_body是一系列填充表返回变量的Transact-SQL语句。 ENCRYPTION指出SQL Server加密包含CREATE FUNCTION语句文本的系统表列。使用ENCRYPTION可以避免将函数作为SQL Server复制的一部分发布。 SCHEMBINDING:指定将函数绑定到它所引用的数据库对象。如果函数是用SCHEMABINDING选项创建的,则不能更改(使用ALTER语句)或除去(

文档评论(0)

1112111 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档