第17章SQLServer函数解析.ppt

课堂练习 6. 创建一个计算圆柱体体积的函数。(两个参数:@r,@h) 7. 在查询分析器中执行这个函数,并查看结果。 表值函数 表值函数:内嵌表值函数、多语句表值函数 返回 table 的用户定义函数可以是替代视图的强大方式。 返回 table 的用户定义函数可用在 T-SQL 查询中允许表或视图表达式的地方。 视图限制于单个 SELECT 语句,而用户定义函数可包含允许比视图中具有的逻辑功能更强大的附加语句。 内嵌表值函数 内嵌函数可用于实现参数化视图的功能。 内嵌表值函数,没有函数主体(即没有BEGIN … END块)。 内嵌表值函数返回单个 SELECT 语句的结果集。 内嵌表值函数语法 CREATE FUNCTION [ owner_name.] function_name ( [ { @parameter_name [AS] scalar_parameter_data_type [ = default ] } [ ,...n ] ] ) RETURNS TABLE [ WITH function_option [ [,] ...n ] ] [ AS ] RETURN [ ( ] select-satement [ ) ] 创建内嵌表值函数举例(一) USE pubs GO CREATE FUNCTION type_book (@type varchar(10)) RETURNS TABLE AS RETURN (SELECT title_id,title,type,price FROM titles WHERE type = @type) 创建内嵌表值函数举例(二) 上面的函数返回的是一个结果集,我们可以把这个函数“看成”是一个带参数的视图。(注意:视图是不允许带参数的) 我们可以在任何可以使用视图的地方使用这个函数。 使用内嵌表值函数 选择所有商业类的图书信息 select * from type_book(business) 选择所有价格小于15美元的商业类图书 Select * from type_book(business) Where price 15 课堂练习 8. 创建一个内嵌表值函数,要求这个函数能够以州名为参数,包含某个指定州的所有作家信息。并调用这个函数。 多语句表值函数 对于多语句表值函数,在 BEGIN...END 块中定义的函数主体包含 TRANSACT-SQL 语句,这些语句可生成行,并将行插入将返回的表中。 相当于在函数体中创建一个中间表,同时向这个表中插入数据,最后返回这个表。 多语句表值函数语法 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 CREATE FUNCTION LargeOrderShippers ( @FreightParm money ) RETURNS @OrderShipperTab TABLE ( ShipperID int, ShipperName nvarchar(80), OrderID int, ShippedDate datetime, Freight money ) AS BEGIN INSERT @OrderShipperTab SELECT S.ShipperID, S.CompanyName, O.OrderID, O.ShippedDate, O.Freight FROM Shippers AS S INNER JOIN Orders AS O ON S.ShipperID = O.ShipVia WHERE O.Freight @FreightParm RETURN END 创建多语句表值函数举例 CREATE FUNCTION type_book2 (@type varchar(10)) RETURNS @ret TABLE ( Title_id varchar(10), Title v

文档评论(0)

1亿VIP精品文档

相关文档