--分页查询的入库明细存储过程 sp_select_rkdetails
if exists(select * from sysobjects where name='sp_select_rkdetails')
drop proc sp_select_rkdetails
go
create proc sp_select_rkdetails
(
@pageIndex int, --当前页码
@pageSize int, --每页显示的数目
@orderId varchar(50)=null, --入库单ID
@bianma varchar(50)=null, --产品编码
@cpXH varchar(50)=null --产品型号
)
as
DECLARE @sq_sql varchar(1000)
set @sq_sql = N'select top @pageSize * from tb_rkdetails where k_id not in(select top @pageSize*(@pageIndex-1) from tb_rkdetails)'
if @orderId is not null
begin
set @sq_sql = @sq_sql+ N' and k_by1 like N''%'+@orderId+'%'''
end
if @bianma is not null
begin
set @sq_sql = @sq_sql+ N' and k_cpBianma like N''%'+@bianma+'%'''
end
if @cpXH is not null
begin
set @sq_sql = @sq_sql+ N' and k_cpXHnumber like N''%'+@cpXH+'%'''
end
Execute @sq_sql
go
//调用存储过程
Exec sp_select_rkdetails '2','15','','',''但是报错了
消息 203,级别 16,状态 2,过程 sp_select_rkdetails,第 24 行
名称 'select top @pageSize * from tb_rkdetails where k_id not in(select top @pageSize*(@pageIndex-1) from tb_rkdetails) and k_by1 like N'%%' and k_cpBianma like N'%%' and k_cpXHnumber like N'%%'' 不是有效的标识符。为什么 我的 is not null 判断没有执行? 在线求解
然后你先改用文本方式执行显示。
看到结果后,相信你自己能够解决了。
PS:@cpXH如果传入的空字符串的话,你的那个条件不成立。这种问题仔细点然后自己严谨的排查一下应该是自己解决的。
但是怎么说我的存储过程不存在?消息 2812,级别 16,状态 62,过程 sp_select_rkdetails,第 24 行
找不到存储过程 'select top @pageSize * from tb_rkdetails where k_id not in(select top @pageSize*(@pageIndex-1) from tb_rkdetails)'。
真服了你了
set @sq_sql = N'select top '+@pageSize'+ * from tb_rkdetails where k_id not in(select top '+@pageSize*(@pageIndex-1)+' from tb_rkdetails)'
select top 15 * from tb_rkdetails where k_id not in(select top 0 k_id from tb_rkdetails)
15
消息 8114,级别 16,状态 1,过程 sp_select_rkdetails,第 0 行
从数据类型 varchar 转换为 int 时出错。