getdate函数不能在用户自定义函数中使用??
错误提示:Error 443: Invalid use of 'getdate' within a function如此,怎么才能在用户自定义函数中获取系统时间呢?
请高手指点,谢谢!

解决方案 »

  1.   

    用视图
    create view TT
    as
      select getdate() as date
    select * from TT
      

  2.   

    --在试图中建一个
    SET QUOTED_IDENTIFIER ON 
    GO
    SET ANSI_NULLS ON 
    GOCREATE VIEW dbo.V_getdate
    AS
    SELECT GETDATE() AS Expr1GO
    SET QUOTED_IDENTIFIER OFF 
    GO
    SET ANSI_NULLS ON 
    GO
    --然后在函数中调用
    select * from dbo.V_getdate
    goCREATE FUNCTION [dbo].[selgetdte] ()  
    RETURNS datetime AS  
    BEGIN 
    declare @str datetime
    set @str=(select * from dbo.V_getdate)
    return @str
    END
    select dbo.selgetdte()
      

  3.   

    刚试过了,二位的方法可以实现我的要求,先谢谢了。
    不过,这样的间接调用会不会产生什么“副作用”呢?SQL Server 2000的联机丛书中,这样提到:函数的确定性和副作用
    函数可以是确定的或不确定的。如果任何时候用一组特定的输入值调用函数时返回的结果总是相同的,则这些函数为确定的。如果每次调用函数时即使用的是相同的一组特定输入值,返回的结果总是不同的,则这些函数为不确定的。不确定的函数会产生副作用。副作用是更改数据库的某些全局状态,比如更新数据库表或某些外部资源,如文件或网络等(例如,修改文件或发送电子邮件消息)。不允许在用户定义函数主体中内置不确定函数。(GETDATE就属于这种不确定函数)
      

  4.   

    It just meet your needs and have no side effect