| |
| udf—sqlserver2000的新特性(1) |
| |
发布者: 发布时间:2006-05-07 |
|
|
本文将介绍microsoft sql 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 < function_option> [, … 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
大小写转换函数
该函数有两个参数:@string和@capitalize_what。
依据 @capitalize_what的值,函数有不同的功能:
¨ @capitalize_what = ‘string’“
函数将 @string的第一个非空字符转换成大写, 其余部分改为小写。
¨ @capitalize_what = ‘sentence’
函数将 @string中的每一句的首个非空字符转换为大写,句子其余部分转换为小写。断句的依据是’.’、’!’、’?’
¨ @capitalize_what = ‘word’
函数将 @string中的每个词都转换成首字符大写,其余小写的形式。
|
| (转载文章请保留出处:北天JAVA技术网(www.java114.com)) |
| |
| 更多精彩文章: |
| udf—sqlserver2000的新特性(2) |
| sqlserver连接vfp数据库的实现 |
| 如何在客户端调用sqlserver的dts包? |
| 拷贝的sqlserver7的恢复方法 |
| sql语句密码验证的安全漏洞 |
| sqlserver7六种数据移动方法 |
| |
| 最近评论: |
|
|
| 你曾悄悄的来过! |
| wow gold,wow gold,wow gold,ffxi gil max(1468) |
|
|
| 冰封的往事! |
| wow power leveling,wow gold,wow power leveling,wow gold
max(3868) |
|
|
| 冰封的往事! |
| wow power leveling,wow gold,WoW Gold,wow gold
max(8077) |
|
|
| 飞舞的传奇! |
| 传世私服,传世私服.传奇世界私服传奇世界私服,传世私服传世私服, 传奇世界私服传奇世界私服.传奇私服传奇私服. max(6839) |
|
|
| |
| 免责声明:该文章由网友发表,如果对您造成侵权,请联系站长。 |
|