sql 传参 无法将varchar 转换为 int 类型
传进来的时候whereProductIdin(@ProductIdList)中的@ProductIdList成了('12,12,14,15')两边多出来了引号.咋处理呢?...
传进来的时候 where ProductId in (@ProductIdList) 中的 @ProductIdList 成了('12,12,14,15')
两边多出来了引号 . 咋处理呢? 谢谢. 展开
两边多出来了引号 . 咋处理呢? 谢谢. 展开
2013-07-07
展开全部
这个你要把传进来参数@ProductIdList这个字符串再处理一下(根据数据库字符串函数,没办法数据库没有数组类型).放在一个临时表中例:@TMP_Table .然后在存储过程中这样的写过滤条件:where productID in (select productID from @TMP_Table ).
处理过程如下:
declare @Par_Str varchar(200) set @Par_Str='12,23,13,24'
declare @TMP_Table table(productId numeric(5,0))
declare @count numeric(5,0) set @count=charindex(',',@Par_Str)
while(@count>0)
begin
insert into @TMP_Table values( convert(numeric(5,0),left(@Par_Str,@count-1)))
set @Par_Str=SUBSTRING(@Par_Str,@count+1,LEN(@Par_Str)-@count)
set @count=charindex(',',@Par_Str)
end
insert into @TMP_Table values( convert(numeric(5,0),@Par_Str))
select * from @TMP_Table
--结果:
处理过程如下:
declare @Par_Str varchar(200) set @Par_Str='12,23,13,24'
declare @TMP_Table table(productId numeric(5,0))
declare @count numeric(5,0) set @count=charindex(',',@Par_Str)
while(@count>0)
begin
insert into @TMP_Table values( convert(numeric(5,0),left(@Par_Str,@count-1)))
set @Par_Str=SUBSTRING(@Par_Str,@count+1,LEN(@Par_Str)-@count)
set @count=charindex(',',@Par_Str)
end
insert into @TMP_Table values( convert(numeric(5,0),@Par_Str))
select * from @TMP_Table
--结果:
2013-07-07
展开全部
declare @sql as varchar(1000);
set @sql = 'select @customerId,.......from SaleProduct where ProductId in (' + @ProductList + ')';
exec(@sql);
set @sql = 'select @customerId,.......from SaleProduct where ProductId in (' + @ProductList + ')';
exec(@sql);
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询