虽然循环不起作用存储过程

时间:2016-10-27 07:36:25

标签: sql-server stored-procedures

我正在处理存储过程,我有一个包含更新查询的while循环:

  • @tmp_ID:表变量中的行ID

  • @secondcolumn(例如):pseudocode@gmail.com; pseudocode@hotmail.com;

  • @splitString(例如):伪代码(我在tblusers中搜索此值并返回真正的邮件地址)

  • tblusers中的真值:pseudocode@hotmail.com

  • @mailadresses必须具有此值:pseudocode@hotmail.com; pseudocode@hotmail.com;

查询应该将@tablename的@columnname更新为' pseudocode@hotmail.com; pseudocode@hotmail.com;'

if (CHARINDEX(';',@secondcolumn) > 0)
        Begin

            While(CHARINDEX(';',@secondcolumn) > 0)
                begin

                    Set @splitMail =SUBSTRING(@secondcolumn,0,CHARINDEX(';',@secondcolumn))

                    Set @splitString = SUBSTRING(@splitMail,0,CHARINDEX('@',@splitMail))

                    Set @q_searchinUsers = 'Select Distinct @splitString_R = eMail from tblusers Where eMail like ''%' + @splitString + '%'''
                    EXEC sp_executesql @q_searchinUsers , N'@splitString_R nvarchar(max) output',@splitString_R OUTPUT

                    Set @mailadresses= @mailadresses+ @splitString_R +';'

                    SET @secondcolumn = REPLACE(@secondcolumn,@splitMail + ';' , '')
                end

                Set @q_updateQuery = 'Update '+ quotename(@tablename) +' Set '+@columnname+' = ''' + @mailadresses+ ''' Where ID = ' + convert(varchar,@tmp_ID) + ''

                Exec sp_executesql @q_updateQuery 
        End 

当我运行程序时,它说''命令已成功完成。'但它并没有更新表格。

提前致谢。

0 个答案:

没有答案