将用户定义的函数作为SQL Server中的系统函数调用

时间:2014-05-08 16:13:51

标签: sql sql-server sql-function

我在SQL server中创建了一个用户定义的函数。是否可以在select语句中调用这些函数,就像任何其他内置函数一样?

Create function [dbo].[TIME_TO_SEC](@inputTime time)
returns INT
As
Begin 
    DECLARE @secDiff INT = datediff(second, '00:00:00', @inputTime)
    return @secDiff;
end 

目前将其称为以下内容:

DECLARE @ret int;
EXEC TIME_TO_SEC @inputTime='01:00:00'
select @ret;

我正在尝试一些简单的事情:

select TIME_TO_SEC('01:00:00') from TimeTable

在SQL服务器中是否可行?

3 个答案:

答案 0 :(得分:1)

这是可能的,但您需要通过用户的架构来引用该功能

select dbo.TIME_TO_SEC('01:00:00') from TimeTable

答案 1 :(得分:1)

如果您的功能出现问题,请尝试添加“WITH EXECUTE AS CALLER”

Create function [dbo].[TIME_TO_SEC](@inputTime time)
Returns int
WITH EXECUTE AS CALLER
As
Begin 
    DECLARE @secDiff INT = datediff(second, '00:00:00', @inputTime)
    return @secDiff;
end 

然后用select

调用该函数
select  dbo.[TIME_TO_SEC](getdate())

答案 2 :(得分:0)

是的,这当然是可行的,看起来你已经拥有了你需要的一切。你试过吗?