日期:2014-05-17  浏览次数:20509 次

郁闷,不知道错在哪里?大家帮忙看下。

use tgq
declare @t1 datetime,@t2 datetime
go
alter function repl(@var varchar(100))
returns varchar(100)
as begin
declare @str varchar(100)
set @str=replace(@var,'and','set')
return @str
end
go
select * from dbo.repl('and @t1=''2012-12-25'' and @t2=''2012-08-25''')
/*
Msg 208, Level 16, State 3, Line 1
对象名 'dbo.repl' 无效。
不知道为什么会出上面的错误提示
*/

------最佳解决方案--------------------
哥,你分清楚什么是表值函数和标量函数,你那个是标量函数,即返回一个varchar,表值函数是return table,
按你的写法你只能这样用:

 SELECT   dbo.repl('and @t1=''2012-12-25'' and @t2=''2012-08-25''')
------其他解决方案--------------------

学习中,谢谢。