CREATE FUNCTION fn_myfun(@month int = Month(GetDate()))
RETURNS float
AS
BEGIN
  ......
END把GetDate()放在函数内部也不行,请教怎么解决这个问题?

解决方案 »

  1.   


    CREATE FUNCTION fn_myfun()
    RETURNS float
    AS
    BEGIN
      declare@month int = Month(GetDate())
    ...
    END declare
      

  2.   

    Ms Sql 的函数功能就是这样,不能接受非确定的函数改用存储过程吧
      

  3.   

    CREATE FUNCTION fn_myfun()
    RETURNS float
    AS
    BEGIN
      declare @month int  
         select @month = Month(GetDate())
         
    END
      

  4.   

    用户定义函数中不允许使用以下内置函数:@@CONNECTIONS 
    @@PACK_SENT 
    GETDATE() 
    @@CPU_BUSY 
    @@PACKET_ERRORS 
    GetUTCDate() 
    @@IDLE 
    @@TIMETICKS 
    NEWID()
    @@IO_BUSY 
    @@TOTAL_ERRORS 
    RAND() 
    @@MAX_CONNECTIONS 
    @@TOTAL_READ 
    TEXTPTR()
    @@PACK_RECEIVED 
    @@TOTAL_WRITE 
      

  5.   

    --定义一个视图,从视图中获取当前月分
    create view vwMonth
    as select NowMonth=Month(getdate())go
    create function fnTest(@month int)
    returns float as
    begin
    declare @NowMonth int
    select @NowMonth=NowMonth from vwMonth
    return 1.0*@NowMonth
    endgo
    declare @n int
    select dbo.fnTest(@n)go
    drop view vwMonth
    drop function fnTest
      

  6.   

    CREATE FUNCTION fn_myfun(@month int)
    RETURNS float
    AS
    BEGIN return isnull(@month,Month(getDate()))
    END
      

  7.   

    CREATE FUNCTION fn_myfun(@month int)
    RETURNS float
    AS
    BEGIN
      ......
    END--调用时传过去就行了.
    fn_myfun(month(getdate()))
      

  8.   

    --调用时传过去就行了.
    fn_myfun(month(getdate()))真的可以吗?我的fn_myfun()是用在视图里的(每行一次)
      

  9.   

    如果还不行.declare @month as int
    set @month = month(getdate())
    fn_myfun(@month) 这样肯定行.