关于SQL SERVER存储过程的问题[高手进,在线等]

来源:百度知道 编辑:UC知道 时间:2024/05/17 23:23:30
设定多个输入参数
如何根据输入参数进行一个表内的复合查询?
如某个输入参数不为空则进行字段匹配查询,如为空则不加入匹配。
我知道啊
一般都是
sql=select from....where
IF 参数1<>"" then
sql=sql+....
end if
if 参数2<>"" then
sql=sql+....
end if
sql=sql+....
rs.open sql,conn,3,3
这样的对吧?但是这个东东在存储过程里面怎么写啊?

给你个例子吧:

CREATE PROCEDURE cx
(
@page int=1, ----当前第几页
@pagesize int=10, -----每页的记录数目
@pagecount int output, ------总共页数
@counts int output, ----总共记录数目
@cxwhere varchar(100)=null , ----查询条件
@cxtable varchar(500)=null, ----查询表格
@cxorder varchar(100)=null , -----查询条件
@cxid varchar(50)=null -------主键
)
as

declare @tmpsql nvarchar(1000)
declare @tmpstr nvarchar(500)
Declare @intCounts int ----要移动的记录数
Declare @BeginID int ----开始的ID
Declare @EndID int ----结束的ID
Declare @strID nvarchar(1000) ----存放取得查询开头或结尾ID的查询语句

set @tmpstr='select @counts=count ('+@cxid+' ) from '+@cxtable+' where '+@cxwhere
exec sp_executesql @tmpstr,N'@counts int out',@counts out
---计算分页总数
if @Counts <= @pageSize
set @pageCount = 1
else
set @pageCount = (@Counts / @pageSize) + 1
--------防止数据溢出
if @page