日期:2014-05-18  浏览次数:20529 次

***存储过程传入参数时遇到的问题:如何把用逗号隔开的字符串参数传入存储过程中varchar类型的SQL语句中..急呀
写了一个存储过程部分语句如下: 
CREATE proc Get_Account_Collect 

@SIMCard varchar(100) 

as 
begin 
   
declare @SQL1 nvarchar(2000) 

set @SQL1='select c.simcard ,CName,CustCatlog from Customer c inner join STKCard o on o.CustID=c.ID'  
  
  if len(@SIMCard)> 0  
  BEGIN  
  set @SQL1 = @SQL1 + ' and c.CustomerNo in ' + @simCard  
   
  END 
  ... 

因为要向字符串类型的SQL中传参数,所以我传入的参数是 (''001'',''002'') 写在程序中的代码是:
  SqlParameter paraSIMCard = new SqlParameter("@SIMCard", SqlDbType.VarChar, 100);
  paraSIMCard.Value ="(''001'',''002'')";
  cmd.Parameters.Add(paraSIMCard);
  他总是报错.

但是我在存储过程中直接把给参数@simCard赋值 ,即:set @simCard='(''001'',''002'')' 或者直接在查询分析器中运行 
exec Get_Account_Collect '(''001'',''002'')'  
这样都可以运行.就是放在程序中执行的时候不行,好奇怪呀...这到底是为什么呀.哪位大GG帮帮小弟呀..不甚感激呀!

------解决方案--------------------
给过程传
('001','002')