ALTER procedure ArticleSearch
   @CategoryID int=-1 OUTPUT,          --类别编号
   @KeyWord nvarchar(50) = '' OUTPUT ,  --关键词
   @Auditing int = -1 OUTPUT ,          --审核状态
   @StartDate datetime  OUTPUT,         --起始日期
   @EndDate datetime OUTPUT            --结止日期
as
   declare @SQL nvarchar(500)   --SQL语句
   set @SQL='select ArticleID,CategoryID,AdminID,[Title],Hit,Auditing,PostTime from Article where [Title] like ''%'+@KeyWord+'%'''
  
   declare @Where nvarchar(100)         --where条件
   set @Where = ''
   if(@CategoryID<>-1)
   begin
      set @Where = ' and CategoryID='+cast(@CategoryID as varchar)
   end
   declare @where1 nvarchar(100)
   set @where1=''
   if(@Auditing<>-1)
   begin
    set @where1='and Auditing='+cast(@Auditing as varchar)
   end
   declare @where2 nvarchar(100)
   begin
    set @where2='and PostTime between '''+cast(@StartDate as varchar)+''' and '''+cast(@EndDate as varchar)+''''
   end
    set @SQL =@SQL+@Where+@where1+@where2在ASP.net调用时没反应
用DATATABLE不显现有行,

解决方案 »

  1.   

    if(@Auditing <>-1) 
      begin 
        set @where1='and Auditing='+cast(@Auditing as varchar) 
      end 
      declare @where2 nvarchar(100) 
      begin 
        set @where2='and PostTime between '''+cast(@StartDate as varchar)+''' and '''+cast(@EndDate as varchar)+'''' and前一定要加空格
    set @where1=' and Auditing='+cast(@Auditing as varchar) 
    set @where2=' and PostTime between 另外想知道错哪里了,你可以这样
    set @SQL =@SQL+@Where+@where1+@where2 
    print @SQL 
    然后在查询分析器里执行以下,看打印出来的sql,复制出来,运行,就知道错在哪了
      

  2.   

    set @Sql='select * from TB where 1=1'
      if(@CategoryID <>'')
        begin
          set @Sql=@Sql+' and CategoryID='''+cast(@CategoryID as varchar)+''''
        endprint @SQL 
    看看
      

  3.   

    SQL语句运行没有错,在查询分析器里吧 print @SQL 里的语句打出来没有问题也有显示有信息,
    就是在ASP.net 中运行,就没反应,我在ASP.net打断点跟踪,到红字有下滑线哪行,dt.Rows的Count
    数是0
    请高高手指点一下 public static List<Articleinfo> ArticleSosuo(int CategoryID, string KeyWord, int Auditing, DateTime StartDate, DateTime EndDate)
        {
            List<Articleinfo> list = new List<Articleinfo>();
            string str = "ArticleSearch";
            SqlParameter[] sp = new SqlParameter[5];
            sp[0] = new SqlParameter("@CategoryID", CategoryID);
            sp[1] = new SqlParameter("@KeyWord", KeyWord);
            sp[2] = new SqlParameter("@Auditing", Auditing);
            sp[3] = new SqlParameter("@StartDate", StartDate);
            sp[4] = new SqlParameter("@EndDate", EndDate);
            DataTable dt = SqlHelper.ExecuteDataTable(str, CommandType.StoredProcedure, sp);
           foreach (DataRow dr in dt.Rows)        {
                Articleinfo at = new Articleinfo();
                at.ArticleID =Convert .ToInt32( dr[0].ToString());
                at.CategoryID =Convert .ToInt32( dr[1].ToString());
                at.AdminID =Convert.ToInt32( dr[2].ToString());
                at.Title = dr[3].ToString();
                at.Hit = Convert.ToInt32(dr[4]);
                at.Auditing = Convert.ToBoolean(dr[5]);
                at.PostTime = Convert.ToDateTime(dr[6]);
                list.Add(at);
            }
      

  4.   

    这是你的全部内容?
    ALTER procedure ArticleSearch 
      @CategoryID int=-1 OUTPUT,          --类别编号 
      @KeyWord nvarchar(50) = '' OUTPUT ,  --关键词 
      @Auditing int = -1 OUTPUT ,          --审核状态 
      @StartDate datetime  OUTPUT,        --起始日期 
      @EndDate datetime OUTPUT            --结止日期 
    as 
      declare @SQL nvarchar(500)  --SQL语句 
      set @SQL='select ArticleID,CategoryID,AdminID,[Title],Hit,Auditing,PostTime from Article where [Title] like ''%'+@KeyWord+'%''' 
      
      declare @Where nvarchar(100)        --where条件 
      set @Where = '' 
      if(@CategoryID <>-1) 
      begin 
          set @Where = ' and CategoryID='+cast(@CategoryID as varchar) 
      end 
      declare @where1 nvarchar(100) 
      set @where1='' 
      if(@Auditing <>-1) 
      begin 
        set @where1='and Auditing='+cast(@Auditing as varchar) 
      end 
      declare @where2 nvarchar(100) 
      begin 
        set @where2='and PostTime between '''+cast(@StartDate as varchar)+''' and '''+cast(@EndDate as varchar)+'''' 
      end 
        set @SQL =@SQL+@Where+@where1+@where2 exec(@sql)--有这个没有?
    go