网站大量收购闲置独家精品文档,联系QQ:2885784924

第12章数据库编程详解.ppt

  1. 1、本文档共69页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
2. 多语句表值函数 在 Transact-SQL 查询中允许使用表或视图表达式的情况下,可以使用表值用户定义函数 多语句表值函数返回一个由一条或多条 Transact-SQL 语句建立的表,类似于存储过程 与存储过程不同的是,多语句表值函数可以在 SELECT 语句的 FROM 子句中被引用,仿佛视图一样 视图受限于单个 SELECT 语句,而用户定义函数可包含更多语句,这些语句的逻辑功能可以比视图中的逻辑功能更加强大。 多语句表值函数示例 USE Northwind GO CREATE FUNCTION fn_Employees (@length nvarchar(9)) RETURNS @fn_Employees table (EmployeeID int PRIMARY KEY NOT NULL, [Employee Name] nvarchar(61) NOT NULL) AS BEGIN IF @length = ShortName INSERT @fn_Employees SELECT EmployeeID, LastName FROM Employees ELSE IF @length = LongName INSERT @fn_Employees SELECT EmployeeID, (FirstName + + LastName) FROM Employees RETURN END SELECT * FROM dbo.fn_Employees(LongName) 3. 内嵌表值函数 内嵌表值函数返回一个单条 SELECT 语句产生的结果的表,类似于视图 相对于视图,内嵌表值函数可使用参数,提供了更强的适应性,扩展了索引视图的功能 实际使用内嵌函数时,可以将它看作一个参数化的视图,它一样也可以从中删除和修改数据,最终删除和修改的同样是基表的数据。 不同于标量函数和多语句表值函数,在内嵌表值函数中只能指定一个RETURNS子句和一个查询,而且不能对返回的表的结构进行定义 内嵌表值函数示例 创建函数 使用参数调用函数 USE Northwind GO CREATE FUNCTION fn_CustomerNamesInRegion ( @RegionParameter nvarchar(30) ) RETURNS table AS RETURN ( SELECT CustomerID, CompanyName FROM Northwind.dbo.Customers WHERE Region = @RegionParameter ) SELECT * FROM fn_CustomerNamesInRegion(NWA) 12.4 Transact-SQL用户定义函数 在小的结果集上使用复杂的标量函数; 由于用户定义函数可能封装了复杂的实现逻辑,用户很可能并没有意识到底层计算的复杂性,消耗大量时间。所以不要在大的结果集上使用复杂的标量函数; 使用多语句表值函数代替返回表的存储过程; 可以提高性能; 使用内嵌表值函数创建参数化视图; 在视图中使用参数,可简化对表和视图的引用 使用内嵌表值函数过滤索引视图; 在索引视图上使用内嵌表值函数可以极大地提高性能。 12.5 Transact-SQL触发器 创建触发器 创建一个触发器时必须指定: 名称; 在其上定义触发器的表; 触发器将何时激发; 激活触发器的数据修改语句 一个表中可有同类型的多个 AFTER 触发器,前提条件是它们的名称各不相同;每个触发器可以执行多个函数。 一个表只能有一个给定类型的 INSTEAD OF 触发器。 使用CREATE TRIGGER命令创建触发器 CREATE TRIGGER trigger_name ON { table | view } [ WITH ENCRYPTION ] 加密 { ????{ { FOR | AFTER | INSTEAD OF } { [ INSERT ] [ , ] [ UPDATE ] } ????????[ WITH APPEND ] ????????[ NOT FOR REPLICATION ] ????????AS ????????[ { IF UPDATE ( column ) ????????????[ { AND | OR } UPDATE ( column ) ]??[ ...n ] ????????| IF ( COLUMNS_UPDATED ( ) { bitwise_operator } updated_bitmask ) ????? { compar

文档评论(0)

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

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

1亿VIP精品文档

相关文档