日期:2014-05-17  浏览次数:20531 次

调用存储过程出错

--Drop PROCEDURE [dbo].[FenYe] 
CREATE PROCEDURE [dbo].[FenYe]
    @curPage INT , --当前页数 
    @pageSize INT , -- 每页显示的数量 
    @th VARCHAR(200) = '' ,    --查询,图号 
    @mc VARCHAR(200) = '' ,    --查询,名称 
    @tm VARCHAR(200) = '' ,    --查询,条码 
    @gysdm VARCHAR(200) = ''    --查询,供应商代码     
AS 
    BEGIN
   
        DECLARE @before INT ,
            @sql NVARCHAR(1000) 
   
        SET @before = ( @curpage - 1 ) * @pageSize 
        SET @sql = 'select top ' + CAST(@pageSize AS VARCHAR(10))
            + ' th,bh,mc,wlbh,tx,dw,nx,xfdw_dm,xfdw_mc,no_bh,rq,bz,glry,bgy From tm_wlbh 
where id not in (Select top ' + CAST(@before AS VARCHAR(10))
            + ' id from tm_wlbh  where (th like ''%''+'+@th+'+''%'' or bh like ''%''+'+@th+'+''%'') and mc like ''%''+'+@mc+'+''%'' and wlbh like ''%''+'+@tm+'+''%'' and xfdw_dm like ''%''+'+@gysdm+'+''%'' order by id)'
        EXEC  (@sql) 
   
    END
   
调用 exec FenYe 1,30,'','','','' 或者  exec FenYe 1,30 可以查到数据,

但是给@th赋值的时候

exec FenYe 1,30,'a','','',''

提示:列名 'a' 无效。

希望指点一下错误,谢谢。
存储 sql

------解决方案--------------------
--Drop PROCEDURE [dbo].[FenYe] 
ALTER  PROCEDURE [dbo].[FenYe]
    @curPage INT , --当前页数 
    @pageSize INT , -- 每页显示的数量 
    @th VARCHAR(200) = '' ,    --查询,图号 
    @mc VARCHAR(200) = '' ,    --查询,名称 
    @tm VARCHAR(200) = '' ,    --查询,条码 
    @gysdm VARCHAR(200) = ''    --查询,供应商代码     
AS 
    BEGIN
    
        DECLARE @before INT ,
            @sql NVARCHAR(1000) 
    
        SET @before = ( @curpage - 1 ) * @pageSize 
        SET @sql = 'se