用户名:
密 码: 记住
您当前的位置:首页 > 网络编程 > sqlserver教程

深度发掘SQL Server 2000 UDF(上)

时间:2014-11-30  来源:互联网  作者:佚名

  本文将介绍Microsoft SQL(SQL Server培训 mySQL培训 ) Server 2000的新增特性—用户自定义函数User-Defined Function(UDF),并演示几个常用的实例。

  

  UDF的功能类似SQL Server中内建的系统函数,如CONVERT、SUBSTRING、 DATAADD、 GETDATA、ISNULL等等。一个UDF可以没有参数,或者带有一个或多个参数,函数运行后将会返回一个函数值。定义UDF的语法如下:

  

  CREATE FUNCTION [ owner_name.] function_name

  

  ( { { @parameter_name scalar_parameter_data_type

  

  [,…n] ] )

  

  RETURN scalar_return_data_type

  

  [WITH [, … n]]

  

  [AS]

  

  BEGIN

  

  Function_body

  

  RETURN scalar_expression

  

  END

  

  每个UDF可以带有0个到1024个参数,每个参数可以是除了timestamp、cursor、table 以外所有的数据类型;函数返回值的限制要更多一些,它不可以是text、ntext、image、timestamp、cursor和table。

  

  函数体是UDF的主要部分,它有两个选项: ENCRYOTION和 SCHEMABINDING。

  

  SCHEMABINDING是SQL Server 2000的新增功能,可以和视图一同使用。该选项不允许删除和修改被该函数引用的对象。这样可以防止无效的函数和视图对它们引用的对象进行结构上的修改。

  

  大家会注意到函数体以Begin开始,End结束。这一点不同于创建存储过程、触发器和视图。当您忘了写上Begin/End时,系统会返回一个提示信息“Incorrect syntax near ‘RETURN’”。为什么不直接说少了Begin/End,这有点让人费解。

  

  下面我用几个例子来说明UDF的应用。

  

  Greatest and Least

  

  为了区别于系统函数Max和Min,我给新函数命名为Greatest和Least,它们会从以参数形式输入的两个值中找出最大值和最小值。

  

  Case语句是两个函数的核心:

  

  CASE WHEN value1 > value2 THEN value1 ELSE value2 END

  

  虽然函数很简单,但用途是很广的。

  

  CREATE FUNCTION dbo.Greatest

  

  -- Return the maximum of two parameters

  

  (@Val1 SQL_VARIANT,

  

  @Val2 SQL_VARIANT)

  

  RETURNS SQL_VARIANT

  

  AS

  

  BEGIN

  

  RETURN (CASE WHEN @val1 > @val2 THEN @val1 ELSE @val2 END)

  

  END

  

  go

  

  CREATE FUNCTION dbo.Least

  

  -- Return the minimum of two parameters

  

  ( @val1 SQL_VARIANT,

  

  @val2 SQL_VARIANT )

  

  RETURNS SQL_VARIANT

  

  AS

  

  BEGIN

  

  RETURN (CASE WHEN @val1 < @val2 THEN @val1 ELSE @val2 END)

  

  END

  

  Go

  

来顶一下
返回首页
返回首页
推荐资讯
从零开始学ASP.NET-基础篇第1/7页 从零开始学ASP.NET-基础篇第1/7页第一天 学习目的: 掌握最基本的Label、TextBox、Button控件
ASP.NET入门数据篇 ASP.NET入门数据篇对于网站编程的初学者来说,总是会上网找些源码来看,但久而
相关文章
栏目更新
栏目热门