sql存储过程数组查询 报错

查询条件,用存储过程查询下面语句selectpaperid,ChargefromChargeOfPaperwherepaperid=1orpaperid=2orpaper... 查询条件,用存储过程查询下面语句

select paperid,Charge from ChargeOfPaper where paperid=1 or paperid=2 or paperid=5
paperid为int类型,Charge 为double类型

实现方式是
exec proc_selectPaperIdList '1‘,’2’,‘5’

语句是
alter PROCEDURE proc_selectPaperIdList
@ID nvarchar(500)
as
DECLARE @PointerPrev int
DECLARE @PointerCurr int
DECLARE @sqlcode varchar(500)
DECLARE @TId varchar(100)
Set @PointerPrev=1

while (@PointerPrev < LEN(@ID))
Begin
Set @PointerCurr=CharIndex(',',@ID,@PointerPrev)
if(@PointerCurr>0)
Begin
set @TId=SUBSTRING(@ID,@PointerPrev,@PointerCurr-@PointerPrev)
SET @PointerPrev = @PointerCurr+1
set @sqlcode=@sqlcode+' paperid= '+@TId+' or '
End
else
Break
End
--删除最后一个,因为最后一个后面没有逗号,所以在循环中跳出,需另外再删除
set @sqlcode=@sqlcode+' paperid= '+@TId
EXEC('select paperid,Charge from ChargeOfPaper where '+ @sqlcode)
GO

报错求解
'where' 附近有语法错误。
展开
 我来答
改天罡0K
2015-01-04 · TA获得超过258个赞
知道小有建树答主
回答量:439
采纳率:0%
帮助的人:243万
展开全部
LEN(@ID) 为null
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式