日期:2014-05-19  浏览次数:20417 次

我已经彻底晕了,请大家帮忙解决拼字符串问题
有一存储过程,参数如下
_Action_CardQuery
                  @UserID   int,
@QueryType   tinyint,
@CardTYpe   nvarchar(128),
@GetType   int,
@BackValue   int,
@Remainder   int,
@D_Start   nvarchar(64),
@D_End   nvarchar(64),
@Code   int   out
我把这个存储过程的执行条件存放再数据库中
_Action_CardQuery   @UserID,0, ' ' 'f35 ' ', ' 'f32 ' ', ' 'f33 ' ' '   ,0,1,0, '2005-04-17 ', '2007-04-30 ',@Code   out
其中@CardTYpe里面的参数是带 ' '的字符串
就是说我在这个存储过程里面执行的是   'where   Type   in   ( '   +     @CardTYpe   +   ') '执行查询语句的。
其中 'f35 ', 'f32 ', 'f33 '就是传来的@CardTYpe
请问:
我在数据库中存放的_Action_CardQuery   @UserID,0, ' ' 'f35 ' ', ' 'f32 ' ', ' 'f33 ' ' '   ,0,1,0, '2005-04-17 ', '2007-04-30 ',@Code   out应该怎么拼?
我彻底拼晕啦




------解决方案--------------------
'where Type in ( ' + @CardTYpe + ') '
改用CharIndex來判斷
'where CharIndex(Type, ' ' ' + @CardTYpe + ' ' ') > 0 '

傳入參數這麼寫
_Action_CardQuery @UserID,0, 'f35,f32,f33 ' ,0,1,0, '2005-04-17 ', '2007-04-30 ',@Code out
------解决方案--------------------
就是说我在这个存储过程里面执行的是 'where Type in ( ' + @CardTYpe + ') '执行查询语句的。

在过程中 ' where type in( ' ' ' + @CardTYpe + ' ' ') ' 这样不行吗?
然后传入的参数普通形式就行了吧? 'f35 '...