Sql server 如何使用sql server在每行上循环并对其应用特定函数

Sql server 如何使用sql server在每行上循环并对其应用特定函数,sql-server,Sql Server,我需要循环xml代码中的每个结果行。我想做的应用功能是获取第一行中的详细信息,并在数据库中搜索参考信息,一旦找到,我需要使用此信息更新该行,以此类推 下面是我的代码,它获取一些信息并返回一个行表,其中包含从数据库获取信息所需的数字: ALTER PROCEDURE [dbo].[MULTI_VALUED_USER_INPUT_PARAMETER](@PRODUCTKEY VARCHAR(MAX)) AS BEGIN DECLARE @xml as xml,@str as varchar(10

我需要循环xml代码中的每个结果行。我想做的应用功能是获取第一行中的详细信息,并在数据库中搜索参考信息,一旦找到,我需要使用此信息更新该行,以此类推

下面是我的代码,它获取一些信息并返回一个行表,其中包含从数据库获取信息所需的数字:

ALTER PROCEDURE [dbo].[MULTI_VALUED_USER_INPUT_PARAMETER](@PRODUCTKEY 
VARCHAR(MAX))
AS
BEGIN

DECLARE @xml as xml,@str as varchar(100),@delimiter as varchar(10)
SET @str = @PRODUCTKEY
SET @delimiter =','
SET @xml = cast(('<X>'+replace(@str,@delimiter ,'</X><X>')+'</X>') as xml)
SELECT N.value('.', 'varchar(10)') as value FROM @xml.nodes('X') as T(N)

END
更新

这是多值用户输入参数函数

"

"

我需要使用这个函数,因为我的输入参数是1234567891234567 所以我需要取123456并在其上应用一个函数,然后将要更新的函数的值放入表的第一行


我需要将它们列在彼此下面的行中,而不是在单独的表中

这是一个广泛的事实,您可以执行搜索分而治之,比如先尝试循环,然后查询和更新..预期的结果集是什么?表还是xml字符串?这里是一个很好的起点。我不知道为什么人们对这个问题投了赞成票。它缺乏成为一个完整问题所需的细节。一般来说,在SQL中,您不需要编写循环。您编写描述所需结果集的查询,然后让优化器确定如何最好地生成该结果。如果您解释这不是一个完整的解决方案以及OP需要做什么,这将是一个更好的答案。感谢您提供的解决方案。虽然我得到的结果是两个表,第一个是数字,第二个是信息;我需要用执行的信息更新同一行。请您添加一些关于源表和目标表的更多信息,以及如何调用[dbo].[多值用户输入参数]。据我所知,您将把分隔的字符串传递给SP并获得产品列表。之后,您将在一些表中搜索这些产品,并尝试进行一些更新。你能提供更多细节吗?我按照你的要求添加了函数RAHUL RICHHARIYA,希望你明白我的意思
Create table #ProdList (    
[ID] int identity(1,1) ,    
[ProdKey] varchar(100)    
)

--INSERT DATA INTO TEMP TABLE    
insert into #ProdList    
exec [dbo].[MULTI_VALUED_USER_INPUT_PARAMETER] N'aaaa,bbbb,cccc,ddddd,eeeee'

declare @CurCount int , @MaxCount int    
select @CurCount = 1 ,@MaxCount = MAX(ID)  from #ProdList

while @CurCount <=@MaxCount    
begin    
   -- YOU CAN REPLCASE THIS CODE WITH YOUR TABLE ADN LOGIC    
   SELECT * FROM #ProdList WHERE ID = @CurCount

   SET @CurCount = @CurCount+1    
end 
Create table #ProdList (    
[ID] int identity(1,1) ,    
[ProdKey] varchar(100)    
)

--INSERT DATA INTO TEMP TABLE    
insert into #ProdList    
exec [dbo].[MULTI_VALUED_USER_INPUT_PARAMETER] N'aaaa,bbbb,cccc,ddddd,eeeee'

declare @CurCount int , @MaxCount int    
select @CurCount = 1 ,@MaxCount = MAX(ID)  from #ProdList

while @CurCount <=@MaxCount    
begin    
   -- YOU CAN REPLCASE THIS CODE WITH YOUR TABLE ADN LOGIC    
   SELECT * FROM #ProdList WHERE ID = @CurCount

   SET @CurCount = @CurCount+1    
end