CREATE PROCEDURE getRecords
AS 
 
  @dtmBdate datetime = '1990-01-01',
  @dtmEdate datetime =  getdate()  select * from TabLC where  dealdate between @dtmBdate and @dtmEdate

解决方案 »

  1.   

    To licry01(龙):
    哥们,不对吧,你把我说的两个参数当变量处理了,好象语法也是错误
      

  2.   

    To licry01(龙):
    你的写法错误,应该是:CREATE PROCEDURE getRecords
    AS 
      declare @dtmBdate datetime
      declare @dtmEdate datetime  set @dtmBdate= '1990-01-01'
      set @dtmEdate =  getdate()  select * from TabLC where  dealdate between @dtmBdate and @dtmEdate
      

  3.   

    难道存储过程的参数默认值不能使用getdate()??????????
      

  4.   

    CREATE PROCEDURE getRecords 
      @dtmBdate datetime = '1990-01-01',
      @dtmEdate datetime =[getdate()]
    AS 
      select * from TabLC where  dealdate between @dtmBdate and @dtmEdate
      

  5.   

    错了:
    CREATE PROCEDURE getRecords 
      @dtmBdate datetime,
      @dtmEdate datetime 
    AS 
      select * from TabLC where  dealdate between @dtmBdate and @dtmEdate
    GO
      

  6.   

    如果是:需要传入两个带默认值的日期参数
    那就是: cbzdream(迷茫) 的写法。
      

  7.   

    CREATE PROCEDURE getRecords (@dtmBdate smalldatetime = '1990-01-01',@dtmEdate smalldatetime=null)
    AS 
      if @dtmEdate is null
      begin
         select @dtmEdate = getdate()
      end
      select * from TabLC where  dealdate between @dtmBdate and @dtmEdate
      

  8.   

    请确定是要存储过程接收两个参数值,还是要在存储过程中使用两个时间的变量
    如果是第一中情况,应该写成
    CREATE PROCEDURE getRecords 
      @dtmBdate datetime,
      @dtmEdate datetime 
    AS 
      select * from TabLC where  dealdate between @dtmBdate and @dtmEdate
    GO
    具体的付值,是在调用存储过程的时候。如果是第二中情况,就是用
    CREATE PROCEDURE getRecords
    AS 
      declare @dtmBdate datetime
      declare @dtmEdate datetime  set @dtmBdate= '1990-01-01'
      set @dtmEdate =  getdate()  select * from TabLC where  dealdate between @dtmBdate and @dtmEdate
      

  9.   

    对了,我确认一下,如果你用的是ms sql server 或 sybase sql server ,我刚才的回复是应该没有问题的
      

  10.   

    这样做
    ------------
    alter PROCEDURE getRecords  
      @dtmBdate datetime,
      @dtmEdate datetime
    AS 
    select * from #TabLC where  dealdate between convert(datetime,@dtmBdate) and @dtmEdate------调用---------------------------------------
    declare @k datetime,@s datetime
    set @k=convert(datetime,'1990-01-01')
    set @s=getdate()
    exec  #getRecords  @k,@s
      

  11.   

    如果你想传的参数是默认值,那就没必要设两个参数了,直接用两个变量就可以了。也就是jiayf020978() ( ) 所说的第二种情况。CREATE PROCEDURE getRecords
    AS 
      declare @dtmBdate datetime
      declare @dtmEdate datetime  set @dtmBdate= '1990-01-01'
      set @dtmEdate =  getdate()  select * from TabLC where  dealdate between @dtmBdate and @dtmEdate
    在用的时候直接执行就可以了,不需要传参数exec getRecords
      

  12.   

    参数默认值必须是常量或 NULL,函数应该不能作为参数默认值使用这样应该可以吧
    CREATE PROCEDURE getRecords 
      @dtmBdate datetime = '1990-01-01',
      @dtmEdate datetime =  null
    AS 
      if @dtmEdate is null
        @dtmEdate = getdate
      select * from TabLC where  dealdate between @dtmBdate and @dtmEdate
    GO
      

  13.   

    写错了
    CREATE PROCEDURE getRecords 
      @dtmBdate datetime = '1990-01-01',
      @dtmEdate datetime =  null
    AS 
      if @dtmEdate is null
        @dtmEdate = getdate()
      select * from TabLC where  dealdate between @dtmBdate and @dtmEdate
    GO