【发布时间】:2014-10-26 16:40:31
【问题描述】:
以下代码是存储过程的一部分。在这里我使用了几个变量。 这个程序的逻辑是,一个字符串将包含用逗号(,)分隔的值,我们需要通过拆分输入字符串来获取每个字符串。现在将在查询中使用分隔的字符串来执行。
示例代码
@cond1-->输入字符串(eg)(''mark'',''lewis'',)
@splt-->分隔字符串(即)标记
Declare @pos INT, @len INT
set @pos = 0
set @len = 0
WHILE CHARINDEX(',', @cond1, @pos+1)>0
BEGIN
set @len = CHARINDEX(',', @cond1, @pos+1) - @pos;
set @splt = SUBSTRING(@cond1, @pos, @len);
if @pid = ''
Begin
set @pid= @splt;
End
Else
Begin
set @pid= @pid + ' or positionid='+ @splt;
End
set @pos = CHARINDEX(',', @cond1, @pos+@len) +1;
END
END
print 'SELECT day1,day1leg1,day1leg2,hccyamt,pfid,pcfcccy,pcfcbank,maturitydate,availeddate FROM rskpcfc WHERE
pcfcid='+@pcid;
SELECT day1,day1leg1,day1leg2,hccyamt,pfid,pcfcccy,pcfcbank,maturitydate,availeddate FROM rskpcfc WHERE
pcfcid=@pcid;
执行上述代码时,
exec [dbo].[pcfc_select] @status='APCASSD',@cond1='''pc14-46-119'',''pc14-47-119'','
打印语句会给出以下内容
SELECT day1,day1leg1,day1leg2,hccyamt,pfid,pcfcccy,pcfcbank,maturitydate,availeddate FROM rskpcfc WHERE
pcfcid='pc14-46-119' or pcfcid='pc14-47-119'
但是select语句即使有值也会返回空表。
除了最后一个选择命令外,一切都很好
感谢您的帮助!!!
【问题讨论】:
标签: sql variables sql-server-2005 stored-procedures where-clause