函数中最后一条语句必须是返回语句

在MSSQL中尝试写了个标量函数:

Create Function StrLength
(
    @Str varchar(200)
)
returns varchar(200) AS
begin
    if(len(@Str)=0)
        return '0'
    else
        return @Str + '_' + convert(varchar(20),len(@Str))
end

保存时出错,提示:函数中最后一条语句必须是返回语句!将上边函数稍做修改:

Create Function StrLength
(
    @Str varchar(200)
)
returns varchar(200) AS
begin
    declare @ReturnStr varchar(200) /*返回值*/

    if(len(@Str)=0)
        set @ReturnStr = '0'
    else
        set @ReturnStr = @Str + '_' + convert(varchar(20),len(@Str))

    return @ReturnStr
end

这回可正常保存了,也就是说:MSSQL的标量函数不能像C#的函数那样可以任意地方用return返回值,他的返回语句必须在最后一行进行!

再来看看标量函数的语法:

Create FUNCTION [ owner_name.] function_name
    ( [ { @parameter_name [AS] scalar_parameter_data_type [ = default ] } [ ,...n ] ] )

RETURNS scalar_return_data_type

[ WITH < function_option> [ [,] ...n] ]

[ AS ]

BEGIN
    function_body
    RETURN scalar_e­xpression
END

语法中已经说得很明白了,只是没去写也没发觉,呵呵。

顺便说下标量函数的调用方法:

/*
标量函数调用格式:owner_name.function_name
注意:owner_name不能省略!
*/
print dbo.StrLength('www.mzwu.com')


评论: 0 | 引用: 0 | 查看次数: 9804
发表评论
登录后再发表评论!