Sql server 2008 在dbml中处理数据类型错误

Sql server 2008 在dbml中处理数据类型错误,sql-server-2008,sql-server-2005,linq-to-sql,linq-to-entities,dbml,Sql Server 2008,Sql Server 2005,Linq To Sql,Linq To Entities,Dbml,在向dbml中添加存储过程时,收到未知返回类型错误。下面是我的Sp。我无法找出错误。我已经检查了太多与此相关的问题,解决方案是不使用临时表。是的,我没有使用临时表,而是使用一些博客建议的表变量,但我也得到了错误。请帮忙 ALTER PROCEDURE dbo.Reports ( @startDate datetime, @endDate datetime, @pageType int, @assignedClincian int )

在向dbml中添加存储过程时,收到未知返回类型错误。下面是我的Sp。我无法找出错误。我已经检查了太多与此相关的问题,解决方案是不使用临时表。是的,我没有使用临时表,而是使用一些博客建议的表变量,但我也得到了错误。请帮忙

ALTER PROCEDURE dbo.Reports
    (
      @startDate datetime,
      @endDate datetime,
      @pageType int,
      @assignedClincian int
    )

AS

BEGIN

 Declare @SqlQuery varchar(max)    
 Declare @strCondition varchar(max)
 Declare @tempTable Table
 (
     First_Name varchar(150),
     Last_Name varchar(150),
     ID int,
     PageType_Id int,
     Rf_Date datetime,
     DOB datetime,
     InsuranceCompany varchar(250),
     AssignedClincian varchar(250)
 )


 set @SqlQuery =  'select * from tblusers'



        If @startDate IS NOT NULL AND @endDate is Not null
        Begin    
           set @strCondition = ' FO.Rf_Date  >= convert(datetime, ''' + Convert(varchar,@startDate,112) + ''') and  FO.Rf_Date<= convert(datetime, ''' + Convert(varchar,@endDate,112) + ''')'
        End  

        Else if @startDate IS NOT NULL 
        Begin
           set @strCondition = ' FO.Rf_Date  >=' + @startDate 
        End

        Else if @EndDate IS NOT NULL 
       Begin
          set @strCondition = ' FO.Rf_Date  <=' + @EndDate 
        End



      if @pageType > 0
      Begin
      set @strCondition = (case when @strCondition='' then ''  else @strCondition +  ' and ' end)  + ' FO.PageType_Id='+ Convert(varchar,@pageType)
      End

    if @assignedClincian > 0
      Begin
          set @strCondition = (case when @strCondition='' then ''  else @strCondition +  ' and ' end) +'  p1.AST_Clinician_Assginments_To=' + Convert(varchar,@assignedClincian)
      End



     set @SqlQuery=(case when @strCondition='' then @SqlQuery  else  @SqlQuery + ' where ' + @strCondition end) + ' order by Fo.ID'

         insert into @tempTable  EXEC (@SqlQuery)    

          select * from @tempTable 

END

RETURN
ALTER过程dbo.Reports
(
@开始日期时间,
@endDate日期时间,
@页面类型int,
@指定临床智力
)
作为
开始
声明@SqlQuery varchar(最大值)
声明@strCondition varchar(最大值)
声明@attreable表
(
名字varchar(150),
姓氏varchar(150),
ID int,
PageType_Id int,
Rf_日期时间,
日期时间,
varchar保险公司(250),
指定的临床变量(250)
)
set@SqlQuery='select*fromtblusers'
如果@startDate不为NULL且@endDate不为NULL
开始
设置@strCondition='FO.Rf_Date>=convert(datetime,''+convert(varchar,@startDate,112)+'')和FO.Rf_Date='+@startDate
终点
如果@EndDate不为空,则为Else
开始

设置@strCondition='FO.Rf_Date因此,在经历了巨大的混乱之后,我最终得出了一个解决方案,即在第二个elseif条件下,我没有像第一个if条件那样正确地转换日期:

 Else if @startDate IS NOT NULL 
        Begin
           set @strCondition = ' FO.Rf_Date  >=' + @startDate 
        End