高手帮我看看。。小弟跪求create proc proc_sign
(@date datetime,--要查询的日期
@name varchar(50),--查询的名字
@currentRecord INT--查询的当前记录
)
as
begin
exec('select top 7 day(t1.workdate) as workdate,(select mor_signtime from MorSign where datediff(dd,MorSign.signdata,t1.workdate)=0 and username='+@name+' ) 
as mor_signtime,(select night_signtime from MorSign where datediff(dd,MorSign.signdata,t1.workdate)=0 and username='+@name+' ) as night_signtime from 
(select date as workdate from Calendar where datediff(m,date,'+@date+')=0 and
 date not in(select top 7  date from Calendar where datediff(m,date,'+@date+')=0)) as t1' )
end
服务器: 消息 170,级别 15,状态 1,行 1
第 1 行: '1' 附近有语法错误。
服务器: 消息 170,级别 15,状态 1,行 1
第 1 行: '1' 附近有语法错误。

解决方案 »

  1.   

    @date datetime 这个用varchar型 并将datediff(m,date,'+@date+')=改成datediff(m,date,'''+@date+''')=username='+@name+' 这个改成 username='''+@name+'''
      

  2.   

    --try
    exec('select top 7 day(t1.workdate) as workdate,(select mor_signtime from MorSign where datediff(dd,MorSign.signdata,t1.workdate)=0 and username='''+@name+''' ) 
    as mor_signtime,(select night_signtime from MorSign where datediff(dd,MorSign.signdata,t1.workdate)=0 and username='''+@name+''' ) as night_signtime from 
    (select date as workdate from Calendar where datediff(m,date,'''+@date+''')=0 and 
    date not in(select top 7  date from Calendar where datediff(m,date,'''+@date+''')=0)) as t1' ) 
      

  3.   

    username='''+@name+''' )  要加单引号
      

  4.   

    create proc proc_sign 
    (@date datetime,--要查询的日期 
    @name varchar(50),--查询的名字 
    @currentRecord INT--查询的当前记录 

    as 
    begin 
    exec('select top 7 day(t1.workdate) as workdate,(select mor_signtime from MorSign where datediff(dd,MorSign.signdata,t1.workdate)=0 and username='''+@name+''' ) 
    as mor_signtime,(select night_signtime from MorSign where datediff(dd,MorSign.signdata,t1.workdate)=0 and username='''+@name+''' ) as night_signtime from 
    (select date as workdate from Calendar where datediff(m,date,'''+@date+''')=0 and 
    date not in(select top 7  date from Calendar where datediff(m,date,'''+@date+''')=0)) as t1' ) 
    end