当前位置: 代码迷 >> ASP.NET >> 存储过程调用 is not null 判断不成功解决思路
  详细解决方案

存储过程调用 is not null 判断不成功解决思路

热度:8267   发布时间:2013-02-25 00:00:00.0
存储过程调用 is not null 判断不成功

--分页查询的入库明细存储过程 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 判断没有执行? 在线求解
------解决方案--------------------------------------------------------
说明你传进来的值不是null么
------解决方案--------------------------------------------------------
你外边传进来的是"" 而不是null 所以你要

 if @bianma <>''
------解决方案--------------------------------------------------------
SQLServer 用 3# 方法
------解决方案--------------------------------------------------------
Execute @sq_sql前加一句print(@sq_sql)
然后你先改用文本方式执行显示。
看到结果后,相信你自己能够解决了。
PS:@cpXH如果传入的空字符串的话,你的那个条件不成立。这种问题仔细点然后自己严谨的排查一下应该是自己解决的。


------解决方案--------------------------------------------------------


引用:
引用:
你外边传进来的是"" 而不是null 所以你要

 if @bianma <>''
我改了你的方法 
但是怎么说我的存储过程不存在?

消息 2812,级别 16,状态 62,过程 sp_select_rkdetails,第 24 行
找不到存储过程 'select top @pageSize * from tb_rkdetails wher……


真服了你了


set @sq_sql = N'select top '+@pageSize'+ * from tb_rkdetails where k_id not in(select top '+@pageSize*(@pageIndex-1)+' from tb_rkdetails)'
  相关解决方案