2017-08-22 1 views
-1

enter image description here Ich muss auf jede Zeile aus dem XML-Code Schleife. Die angewandte Funktion, die ich machen möchte, ist, die Details in der ersten Zeile zu nehmen und in der Datenbank nach den Referenzinformationen zu suchen, sobald es gefunden ist, muss ich die Zeile mit diesen Informationen aktualisieren usw. erforderlich ist, um seine Informationen aus der Datenbank zu erhaltenWie kann ich auf jeder Zeile Schleife und wenden Sie eine bestimmte Funktion auf sie mit SQL-Server

hier ist mein Code, der einige Informationen und gibt eine Tabelle der Zeilen mit den Zahlen nimmt:

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 

UPDATE !!

hier ist die MULTI_VALUED_USER_INPUT_PARAMETER Funktion

'

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 

'

Ich brauche diese Funktion als meine Eingabe parametes zu verwenden sind "123456,789123,4567" so muss ich nehmen der "123456" und wenden Sie eine Funktion darauf an, dann den Wert der Funktion aktualisiert werden und in die erste Zeile der Tabelle

ich sie brauchen in Reihen untereinander aufgelistet werden nicht in getrennten Tabellen

+0

dies tatsächlich breit ist, können Sie eine Suche können (Teile und herrsche) wie zuerst versuchen, auf Looping und dann die Abfrage und Aktualisierung .. – TheGameiswar

+0

Was ist das erwartete Ergebnis? Eine Tabelle oder eine XML-Zeichenfolge? –

+2

Hier ist ein großartiger Ort, um zu beginnen. http://spaghettidba.com/2015/04/24/how-to-post-a-t-sql-question-on-a-public-forum/ –

Antwort

0
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 <[email protected]  
begin  
    -- YOU CAN REPLCASE THIS CODE WITH YOUR TABLE ADN LOGIC  
    SELECT * FROM #ProdList WHERE ID = @CurCount 

    SET @CurCount = @CurCount+1  
end 
+0

Dies wäre eine viel bessere Antwort, wenn Sie erklären, dass es keine vollständige Lösung ist und was das OP tun muss. –

+0

Danke für die Lösung. Obwohl ich das Ergebnis als 2 Tabellen erhalte, ist die erste die Nummer und die zweite die Information; Ich musste die gleiche Zeile mit den ausgeführten Informationen aktualisieren –

+0

Könnten Sie bitte weitere Informationen über Ihre Quell- und Zieltabelle und wo \ wie Sie [dbo] aufrufen [MULTI_VALUED_USER_INPUT_PARAMETER] hinzufügen. Nach meinem Verständnis werden Sie "," getrennte Zeichenfolge an SP übergeben und eine Liste des Produkts erhalten. Danach suchen Sie dieses Produkt in einer Tabelle und versuchen, ein Update durchzuführen. Könnten Sie bitte etwas mehr Details geben? –

Verwandte Themen