请教下各位高手,我想实现这样一个查询语句 select * from a where (name like '%'+@name+ '%' or @name='') and (suject like '%'+@suject + '%' or @suject ='')。利用以下的分页存储过程
Create PROCEDURE proc_paged

@tblName     nvarchar(200),        ----要显示的表或多个表的连接 
@fldName     nvarchar(500) = '*',    ----要显示的字段列表 
@pageSize    int = 10,        ----每页显示的记录个数 
@page        int = 1,        ----要显示那一页的记录 
@fldSort    nvarchar(200) = null,    ----排序字段列表或条件 
@Sort        bit = 0,        ----排序方法,0为升序,1为降序(如果是多字段排列Sort指代最后一个排序字段的排列顺序(最后一个排序字段不加排序标记)--程序传参如:' SortA Asc,SortB Desc,SortC ') 
@strCondition    nvarchar(1000) = null,    ----查询条件,不需where 
@ID        nvarchar(150),        ----主表的主键 
@Dist                 bit = 0,           ----是否添加查询字段的 DISTINCT 默认0不添加/1添加 
@pageCount    int = 1 output,            ----查询结果分页后的总页数 
@Counts    int = 1 output                ----查询到的记录数 
)
查询条件@strCondition这个参数,应该如何赋值?

解决方案 »

  1.   

    你的@name,@subject都沒有在sp:proc_paged中包含這兩個參數,你拼結sql時怎麼取的到呢?
    可以在程序中傳值,直接給你的@strCondition傳入含有已賦值的name和subject,如:string name = "name1";
                string subject = "subject1";
                string whereCase = string.Format(@" (name like ''%{0}%'' 
                    or {0}='''') and (suject like ''%{1} %'' or {1} ='''')", name.Replace("'", "''''"), subject.Replace("'", "''''"));
    //然後將whereCase傳入你的存儲過程的參數@strCondition中就可以了當然你也可以加入這兩個值作為proc_paged的參數,此時需更新你的sp
      

  2.   

    谢谢楼上的解答,你说的那种在程序中传值的方法我知道。但是因为是多条件查询,如果在程序中赋值很麻烦,要一个个条件去判断,然后拼接不同的sql语句。我想直接一条语句就满足所有的条件查询,然后通过存储过程@strCondition这个参数传进去。我现在就是不知道怎么包含@name,@subject这两个参数进去,才能取到我从程序中给这两个参数赋的值!