木子屋 Dnawo's BLOG

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

👤 dnawo 📅 2008-07-16 👁 10381 👍 0 💬 0 🔄 本站原创
在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_expression
END

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

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

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

评论(0)

暂无评论。

计算题
评论需审核通过后显示
← 上一篇 使用TrimEnd格式化字符串 下一篇 → MSSQL标量函数、多语句表值函数和内嵌表值函数