- 1、本文档共46页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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语句)或除去(
您可能关注的文档
最近下载
- 2025年医疗资源均衡配置政策对公共卫生服务的提升作用.docx
- 地质建模软件:Surpac二次开发_(22).地质建模质量控制与验证.docx VIP
- 个人授信及担保协议.doc
- 汽车电子电磁兼容emc标准分析资料精.pdf VIP
- 湖南省部分学校2024-2025学年高一上学期期末考试物理试卷(原卷版及答案).docx VIP
- 最新宝宝填色涂色本(精排WORD打印版).doc VIP
- 地质建模软件:Surpac二次开发_(5).三维地质建模技术.docx VIP
- JJF 1554-2015 旋进旋涡流量计型式评价大纲.pdf
- 侧柏公益林质量精准提升技术规程.docx VIP
- 餐具清洁小能手教案.docx VIP
文档评论(0)