带查询参数的SQL server存储过程

--分页查询的存储过程

--检查该存储过程名称是否已经存在
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), --入/出库单ID
   @bianma varchar(50), --产品编码
   @cpXH varchar(50)    --产品型号
)
as

   --声明一个字符串容器,装sql语句
   DECLARE @sq_sql varchar(1000)

   --第一次给SQL语句赋值
   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

       --如果不为空,则追加入SQL语句中。这里  注意  单引号的转义。两个单引号,在一起表示一个单引号
       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' an k_cpXHnumber like N''%'+@cpXH+'%'''
     end

   --执行SQL语句
   Execute @sq_sql
go

原文地址:https://www.cnblogs.com/huanhuan86/p/2734185.html