@PStartTime nvarchar(10),--起始日期
@PEndTime   nvarchar(10),--截止日期
@ProjectID   int,--项目ID
@CompanyID   int,--用户组ID
@ReportTypeID   int,--悬案类型ID
@ProjectLevelID   int,--项目阶段ID
@AssignmentID   int,--任务ID
@StatusID   int--状态SET @strSqlSelect = @strSqlSelect + '  AND (tx.PresentTime  >= '+ ''''+convert(char(10),@lvd_begin_date,120);
    SET @strSqlSelect = @strSqlSelect + ''') AND ( tx.PresentTime < '+''''+ convert(char(10),@lvd_end_date,120) ;
    SET @strSqlSelect = @strSqlSelect + ''') AND (tx.ProjectID  = '''+convert(int,@ProjectID) ;;
    SET @strSqlSelect = @strSqlSelect + ''') ORDER BY tx.XuanAnID,ta.SNValue';
EXEC( @strSqlSelect );
执行时:红色部分报“转换成数据类型 int 时失败。“错误!

解决方案 »

  1.   

    convert(varchar,@ProjectID)字符跟整数不能直接相加
      

  2.   

    证明 ProjectID 不能转换为int的 所以你就用nvert(varchar,@ProjectID)
      

  3.   

    SET @strSqlSelect = @strSqlSelect + ''') AND (tx.ProjectID  = '''+convert(varchar(100),@ProjectID)
      

  4.   

    tx.ProjectID  = '''+convert(VARCHAR(8000),@ProjectID) 
      

  5.   

    SET @strSqlSelect = @strSqlSelect + ''') AND (tx.ProjectID  = '''+convert(int,@ProjectID) ;; 
     SET @strSqlSelect = @strSqlSelect + ''') ORDER BY tx.XuanAnID,ta.SNValue'; -->SET @strSqlSelect = @strSqlSelect + ''') AND (tx.ProjectID  = '+convert(varchar(300),@ProjectID) ;
     SET @strSqlSelect = @strSqlSelect + ') ORDER BY tx.XuanAnID,ta.SNValue'; 
      

  6.   

    SET @strSqlSelect = @strSqlSelect + ''') AND (tx.ProjectID  = '''+LTRIM(@ProjectID) ;;
      

  7.   

    肯定错啊
    cast(@ProjectID as varchar(10))