请问一下函数有问题嘛?在SQLSERVER 2000下编译通过,但运行不通过。如果把 dbo.getdate() 改成 getdate(),编译不通过。但一下代码2005通过,并能运行!!在线等!!!create function dd(@i int)
returns varchar(8)
as
begin
declare @r varchar(8) if @i <=28 
select @r = convert(varchar(8),dbo.getdate(),120)

return @rendgo

解决方案 »

  1.   

    Server: Msg 208, Level 16, State 1, Procedure dd, Line 27
    Invalid object name 'dbo.getdate'.运行报以上错误
      

  2.   

    Server: Msg 443, Level 16, State 1, Procedure dd, Line 10
    Invalid use of 'getdate' within a function.去掉 dbo的话,编译报以上错误。。郁闷
      

  3.   

    函数里面不能使用getdate()获取当前日期。 。
    如果一定要用, 最好把当前日期作为参数传入函数。
      

  4.   

    convert(varchar(8),getdate(),120) 不会有错
      

  5.   

    函数里面不能使用getdate()
    如果要用,只能先获取getdate值,然后传参数给函数.
      

  6.   

    declare 
    @DateFit1 VARCHAR(20),
        @DateFit2 VARCHAR(20),
        @DateFit3 VARCHAR(20),
        @DateFit4 VARCHAR(20),
        @DateFit5 VARCHAR(20),
        @DateFit6 VARCHAR(20),
        @DateFit7 VARCHAR(20),
        @DateFit8 VARCHAR(20),
        @DateFit9 VARCHAR(20),
        @DateFit10 VARCHAR(20),
        @DateFit11 VARCHAR(20),
        @DateFit12 VARCHAR(20),
        @DateFit13 VARCHAR(20),
        @DateFit14 VARCHAR(20),
        @DateFit15 VARCHAR(20),
        @DateFit16 VARCHAR(20),
        @DateFit17 VARCHAR(20),
        @DateFit18 VARCHAR(20),
        @DateFit19 VARCHAR(20),
        @DateFit20 VARCHAR(20),
        @DateFit21 VARCHAR(20),
        @DateFit22 VARCHAR(20),
        @DateFit23 VARCHAR(20),
        @DateFit24 VARCHAR(20),
        @DateFit25 VARCHAR(20),
        @DateFit26 VARCHAR(20),
        @DateFit27 VARCHAR(20),
        @DateFit28 VARCHAR(20),
        @DateFit29 VARCHAR(20),
        @DateFit30 VARCHAR(20),
        @DateFit31 VARCHAR(20), @i int,@sp varchar(4000)select @i=1
    while (@i<32)
    begin
    select  dbo.Get_Now_Day(@i,getdate())
    select @sp =  'set @DateFit' + cast(@i as varchar(2)) + '=''' + dbo.Get_Now_Day(@i,getdate()) + ''''
    print @sp
    exec ( @sp)
    select @i=@i+1
    end
    再问一个,我以上的赋值语句也不对嘛?为什么啊?难道只能一个一个变量来赋值?
      

  7.   

    create function dd(@i int,@getdate datetime) returns varchar(8) 
    as 
    begin 
    declare @r varchar(8) if @i  <=28  
    select @r = convert(varchar(8),@getdate,120) return @r end go--調的時候把getdate()傳入
      

  8.   

    還不如declare @t table(datafied varchar(20))
    然后insert 31筆資料進去
      

  9.   

    2000(包含)之前的版本,function中不能用getdate(),之后的可以。
    可以用变相的代替:create view mydate as
    select getdate() 
    go
    select date from mydate
      

  10.   

    更正:create view mydate as
    select getdate() date
    go
    select date from mydate
      

  11.   

    sqlserve 2000 在函数内部是不能调用getdate(),可以将getdate()放在view 中使用
     create view get_date as
     select getdate() date
     go
    declare @d datetime
    select @d=date from get_date
    select @d
      

  12.   

    select convert(varchar(10),getdate(),120)