调用存储过程出错

Trust-Me 2013-01-17 06:27:30

--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' 无效。

希望指点一下错误,谢谢。
...全文
382 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
Trust-Me 2013-01-18
  • 打赏
  • 举报
回复
引用 5 楼 DBA_Huangzj 的回复:
你把上面的代码中最后那句EXEC改成print,然后传入参数来执行,再看看print出来的是什么结果。然后再调试
哦,我知道了,谢谢啊,你的代码没有问题,我的思路有问题,呵呵,谢了。
發糞塗牆 2013-01-18
  • 打赏
  • 举报
回复
你把上面的代码中最后那句EXEC改成print,然后传入参数来执行,再看看print出来的是什么结果。然后再调试
Trust-Me 2013-01-18
  • 打赏
  • 举报
回复
引用 3 楼 DBA_Huangzj 的回复:
SQL code?123456789101112131415161718192021222324252627--Drop PROCEDURE [dbo].[FenYe] ALTER PROCEDURE [dbo].[FenYe] @curPage INT , --当前页数 @pageSize INT , -- 每页显示的数量 @th VARCHAR……
输入任何参数都是无效的,也就是说和没输入一样,
發糞塗牆 2013-01-17
  • 打赏
  • 举报
回复
--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 = '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
开启时代 2013-01-17
  • 打赏
  • 举报
回复
--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
szm341 2013-01-17
  • 打赏
  • 举报
回复
''%''+'+@th+'+''%''这里的引号去掉一些''%'+@th+'%'' 后面的也要改

22,210

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧