Reputation: 4354
I have a stored procedure
CREATE PROCEDURE [dbo].[Proc_SplitAndRemoveDuplicates]
@sep VARCHAR(32),
@s NVARCHAR(MAX),
@hcp NVARCHAR(MAX) OUTPUT
AS
BEGIN
DECLARE @t TABLE (val NVARCHAR(MAX))
SET @hcp = ''
DECLARE @xml XML
SET @xml = N'<root><r>' + REPLACE(@s, @sep, '</r><r>') + '</r></root>'
PRINT CAST (@xml AS NVARCHAR(MAX))
INSERT INTO @t(val)
SELECT RTRIM(LTRIM(r.value('.','NVARCHAR(MAX)'))) as Item
FROM @xml.nodes('//root/r') AS RECORDS(r)
;WITH cte AS
(
SELECT ROW_NUMBER() OVER (PARTITION BY val ORDER BY val desc) RN
FROM @t
)
DELETE FROM cte
WHERE RN > 1
SET @hcp = (SELECT SPACE(1) + val + ',' from @t WHERE val <> '' FOR XML PATH ('') )
END
Now when I pass the same values in arguments it gives me different results, any ideas why is this happening?
Below is the query that's giving different results:
DECLARE @hcp NVARCHAR(MAX)
EXEC [Proc_SplitAndRemoveDuplicates] ',', 'Marie-Louise Coenen, Christiaan Genbrugge, Kurt Geldof, Philippe Gilbert, Benoit Calcus, Michel Gijssels, Leon Ghyselinck, Ivan Ghillebert, Peter Chielens, Jozef Gevers, Bernard Gevenois, Paul Geusens, Jozef Geukens, Sabine Goolaerts, Yves Heeren, Val?rie Goffin, Pierro Fattizzo, Philippe Farr, Sophie Schyns, Jean-Pierre Falla, Jean-Michel Gobeaux, Marie-Annick G?tze, Pierre Firket, France Gosse, Johanna Gomez Tercero, Marianne Schoofs, Philippe Schockaert, Lieven De Norre, Val?rie Denef, Kathleen Geens, Walter Geeraerts, Fran?oise Gerard, Claudia Schomus, Ellen Schorkops, Bernard Gerbaux, Eveline Schleich, Micheline Demeyer, Brigitte Gadisseux, Brenda Laera, * GHERALDI, * VAUTHIER, . MARC, *THOMAS* RABERN, * BLANDIN, . BARON, A GUICHARD LEBRUN, A FRANCE VENTRE, A ILAH NOURY, A MARIE BONNERIC BRETON, A PAULE GIMENEZ ROQUEPLOT, A rakoto NIRHY LANTO, A sophie CHOQUET, A marie COURTEL, A MARIE HAOND, A sophie CALLOC H, A marie MAILLOTTE, AABDALLAH JOIDATE, AANYO KUZEAWU, ABBAS AL MAKKI, Abakar ABAKAR MAHAMAT, Ab nasser DOUMI, ABBAS SROUR, ABDAKA BELLOUTI, ABBOUD ABO, Abdallah MOUSTEAU, Marie-Louise Coenen, Christiaan Genbrugge, Kurt Geldof, Philippe Gilbert, Benoit Calcus, Michel Gijssels, Leon Ghyselinck, Ivan Ghillebert, Peter Chielens, Jozef Gevers, Bernard Gevenois, Paul Geusens, Jozef Geukens, Sabine Goolaerts, Yves Heeren, Val?rie Goffin, Pierro Fattizzo, Philippe Farr, Sophie Schyns, Jean-Pierre Falla, Jean-Michel Gobeaux, Marie-Annick G?tze, Pierre Firket, France Gosse, Johanna Gomez Tercero, Marianne Schoofs, Philippe Schockaert, Lieven De Norre, Val?rie Denef, Kathleen Geens, Walter Geeraerts, Fran?oise Gerard, Claudia Schomus, Ellen Schorkops, Bernard Gerbaux, Eveline Schleich, Micheline Demeyer, Brigitte Gadisseux, Brenda Laera, * GHERALDI, * VAUTHIER, . MARC, *THOMAS* RABERN, * BLANDIN, . BARON, A GUICHARD LEBRUN, A FRANCE VENTRE, A ILAH NOURY, A MARIE BONNERIC BRETON, A PAULE GIMENEZ ROQUEPLOT, A rakoto NIRHY LANTO, A sophie CHOQUET, A marie COURTEL, A MARIE HAOND, A sophie CALLOC H, A marie MAILLOTTE, AABDALLAH JOIDATE, AANYO KUZEAWU, ABBAS AL MAKKI, Abakar ABAKAR MAHAMAT, Ab nasser DOUMI, ABBAS SROUR, ABDAKA BELLOUTI, ABBOUD ABO, Abdallah MOUSTEAU, Marie-Louise Coenen, Christiaan Genbrugge, Kurt Geldof, Philippe Gilbert, Benoit Calcus, Michel Gijssels, Leon Ghyselinck, Ivan Ghillebert, Peter Chielens, Jozef Gevers, Bernard Gevenois, Paul Geusens, Jozef Geukens, Sabine Goolaerts, Yves Heeren, Val?rie Goffin, Pierro Fattizzo, Philippe Farr, Sophie Schyns, Jean-Pierre Falla, Jean-Michel Gobeaux, Marie-Annick G?tze, Pierre Firket, France Gosse, Johanna Gomez Tercero, Marianne Schoofs, Philippe Schockaert, Lieven De Norre, Val?rie Denef, Kathleen Geens, Walter Geeraerts, Fran?oise Gerard, Claudia Schomus, Ellen Schorkops, Bernard Gerbaux, Eveline Schleich, Micheline Demeyer, Brigitte Gadisseux, Brenda Laera, * GHERALDI, * VAUTHIER, . MARC, *THOMAS* RABERN, * BLANDIN, . BARON, A GUICHARD LEBRUN, A FRANCE VENTRE, A ILAH NOURY, A MARIE BONNERIC BRETON, A PAULE GIMENEZ ROQUEPLOT, A rakoto NIRHY LANTO, A sophie CHOQUET, A marie COURTEL, A MARIE HAOND, A sophie CALLOC H, A marie MAILLOTTE, AABDALLAH JOIDATE, AANYO KUZEAWU, ABBAS AL MAKKI, Abakar ABAKAR MAHAMAT, Ab nasser DOUMI, ABBAS SROUR, ABDAKA BELLOUTI, ABBOUD ABO, Abdallah MOUSTEAU, Marie-Louise Coenen, Christiaan Genbrugge, Kurt Geldof, Philippe Gilbert, Benoit Calcus, Michel Gijssels, Leon Ghyselinck, Ivan Ghillebert, Peter Chielens, Jozef Gevers, Bernard Gevenois, Paul Geusens, Jozef Geukens, Sabine Goolaerts, Yves Heeren, Val?rie Goffin, Pierro Fattizzo, Philippe Farr, Sophie Schyns, Jean-Pierre Falla, Jean-Michel Gobeaux, Marie-Annick G?tze, Pierre Firket, France Gosse, Johanna Gomez Tercero, Marianne Schoofs, Philippe Schockaert, Lieven De Norre, Val?rie Denef, Kathleen Geens, Walter Geeraerts, Fran?oise Gerard, Claudia Schomus, Ellen Schorkops, Bernard Gerbaux, Eveline Schleich, Micheline Demeyer, Brigitte Gadisseux, Brenda Laera, * GHERALDI, * VAUTHIER, . MARC, *THOMAS* RABERN, * BLANDIN, . BARON, A GUICHARD LEBRUN, A FRANCE VENTRE, A ILAH NOURY, A MARIE BONNERIC BRETON, A PAULE GIMENEZ ROQUEPLOT, A rakoto NIRHY LANTO, A sophie CHOQUET, A marie COURTEL, A MARIE HAOND, A sophie CALLOC H, A marie MAILLOTTE, AABDALLAH JOIDATE, AANYO KUZEAWU, ABBAS AL MAKKI, Abakar ABAKAR MAHAMAT, Ab nasser DOUMI, ABBAS SROUR, ABDAKA BELLOUTI, ABBOUD ABO, Abdallah MOUSTEAU, Marie-Louise Coenen, Christiaan Genbrugge, Kurt Geldof, Philippe Gilbert, Benoit Calcus, Michel Gijssels, Leon Ghyselinck, Ivan Ghillebert, Peter Chielens, Jozef Gevers, Bernard Gevenois, Paul Geusens, Jozef Geukens, Sabine Goolaerts, Yves Heeren, Val?rie Goffin, Pierro Fattizzo, Philippe Farr, Sophie Schyns, Jean-Pierre Falla, Jean-Michel Gobeaux, Marie-Annick G?tze, Pierre Firket, France Gosse, Johanna Gomez Tercero, Marianne Schoofs, Philippe Schockaert, Lieven De Norre, Val?rie Denef, Kathleen Geens, Walter Geeraerts, Fran?oise Gerard, Claudia Schomus, Ellen Schorkops, Bernard Gerbaux, Eveline Schleich, Micheline Demeyer, Brigitte Gadisseux, Brenda Laera, * GHERALDI, * VAUTHIER, . MARC, *THOMAS* RABERN, * BLANDIN, . BARON, A GUICHARD LEBRUN, A FRANCE VENTRE, A ILAH NOURY, A MARIE BONNERIC BRETON, A PAULE GIMENEZ ROQUEPLOT, A rakoto NIRHY LANTO, A sophie CHOQUET, A marie COURTEL, A MARIE HAOND, A sophie CALLOC H, A marie MAILLOTTE, AABDALLAH JOIDATE, AANYO KUZEAWU, ABBAS AL MAKKI, Abakar ABAKAR MAHAMAT, Ab nasser DOUMI, ABBAS SROUR, ABDAKA BELLOUTI, ABBOUD ABO, Abdallah MOUSTEAU, Marie-Louise Coenen, Christiaan Genbrugge, Kurt Geldof, Philippe Gilbert, Benoit Calcus, Michel Gijssels, Leon Ghyselinck, Ivan Ghillebert, Peter Chielens, Jozef Gevers, Bernard Gevenois, Paul Geusens, Jozef Geukens, Sabine Goolaerts, Yves Heeren, Val?rie Goffin, Pierro Fattizzo, Philippe Farr, Sophie Schyns, Jean-Pierre Falla, Jean-Michel Gobeaux, Marie-Annick G?tze, Pierre Firket, France Gosse, Johanna Gomez Tercero, Marianne Schoofs, Philippe Schockaert, Lieven De Norre, Val?rie Denef, Kathleen Geens, Walter Geeraerts, Fran?oise Gerard, Claudia Schomus, Ellen Schorkops, Bernard Gerbaux, Eveline Schleich, Micheline Demeyer, Brigitte Gadisseux, Brenda Laera, * GHERALDI, * VAUTHIER, . MARC, *THOMAS* RABERN, * BLANDIN, . BARON, A GUICHARD LEBRUN, A FRANCE VENTRE, A ILAH NOURY, A MARIE BONNERIC BRETON, A PAULE GIMENEZ ROQUEPLOT, A rakoto NIRHY LANTO, A sophie CHOQUET, A marie COURTEL, A MARIE HAOND, A sophie CALLOC H, A marie MAILLOTTE, AABDALLAH JOIDATE, AANYO KUZEAWU, ABBAS AL MAKKI, Abakar ABAKAR MAHAMAT, Ab nasser DOUMI, ABBAS SROUR, ABDAKA BELLOUTI, ABBOUD ABO, Abdallah MOUSTEAU, Marie-Louise Coenen, Christiaan Genbrugge, Kurt Geldof, Philippe Gilbert, Benoit Calcus, Michel Gijssels, Leon Ghyselinck, Ivan Ghillebert, Peter Chielens, Jozef Gevers, Bernard Gevenois, Paul Geusens, Jozef Geukens, Sabine Goolaerts, Yves Heeren, Val?rie Goffin, Pierro Fattizzo, Philippe Farr, Sophie Schyns, Jean-Pierre Falla, Jean-Michel Gobeaux, Marie-Annick G?tze, Pierre Firket, France Gosse, Johanna Gomez Tercero, Marianne Schoofs, Philippe Schockaert, Lieven De Norre, Val?rie Denef, Kathleen Geens, Walter Geeraerts, Fran?oise Gerard, Claudia Schomus, Ellen Schorkops, Bernard Gerbaux, Eveline Schleich, Micheline Demeyer, Brigitte Gadisseux, Brenda Laera, * GHERALDI, * VAUTHIER, . MARC, *THOMAS* RABERN, * BLANDIN, . BARON, A GUICHARD LEBRUN, A FRANCE VENTRE, A ILAH NOURY, A MARIE BONNERIC BRETON, A PAULE GIMENEZ ROQUEPLOT, A rakoto NIRHY LANTO, A sophie CHOQUET, A marie COURTEL, A MARIE HAOND, A sophie CALLOC H, A marie MAILLOTTE, AABDALLAH JOIDATE, AANYO KUZEAWU, ABBAS AL MAKKI, Abakar ABAKAR MAHAMAT, Ab nasser DOUMI, ABBAS SROUR, ABDAKA BELLOUTI, ABBOUD ABO, Abdallah MOUSTEAU, Marie-Louise Coenen, Christiaan Genbrugge, Kurt Geldof, Philippe Gilbert, Benoit Calcus, Michel Gijssels, Leon Ghyselinck, Ivan Ghillebert, Peter Chielens, Jozef Gevers, Bernard Gevenois, Paul Geusens, Jozef Geukens, Sabine Goolaerts, Yves Heeren, Val?rie Goffin, Pierro Fattizzo, Philippe Farr, Sophie Schyns, Jean-Pierre Falla, Jean-Michel Gobeaux, Marie-Annick G?tze, Pierre Firket, France Gosse, Johanna Gomez Tercero, Marianne Schoofs, Philippe Schockaert, Lieven De Norre, Val?rie Denef, Kathleen Geens, Walter Geeraerts, Fran?oise Gerard, Claudia Schomus, Ellen Schorkops, Bernard Gerbaux, Eveline Schleich, Micheline Demeyer, Brigitte Gadisseux, Brenda Laera, * GHERALDI, * VAUTHIER, . MARC, *THOMAS* RABERN, * BLANDIN, . BARON, A GUICHARD LEBRUN, A FRANCE VENTRE, A ILAH NOURY, A MARIE BONNERIC BRETON, A PAULE GIMENEZ ROQUEPLOT, A rakoto NIRHY LANTO, A sophie CHOQUET, A marie COURTEL, A MARIE HAOND, A sophie CALLOC H, A marie MAILLOTTE, AABDALLAH JOIDATE, AANYO KUZEAWU, ABBAS AL MAKKI, Abakar ABAKAR MAHAMAT, Ab nasser DOUMI, ABBAS SROUR, ABDAKA BELLOUTI, ABBOUD ABO, Abdallah MOUSTEAU, ', @hcp OUTPUT
SELECT @hcp
Any help would be really apreciated.
Upvotes: 1
Views: 88
Reputation: 1269563
I notice two suspect things in your stored procedure. First is in this line:
(SELECT ROW_NUMBER() OVER (PARTITION BY val ORDER BY val desc) as RN
Sorting in SQL is unstable. That means that rows with the same key values can appear in any order -- and that order can change from one run to the next. That means that the specific row being deleted in indeterminate (although it would always have the correct val
value).
Second, you have for xml path
, but you have no order by
. If the different results are simply in the "wrong" order, you can easily fix that by putting an order by
into that statement.
These are just two issues that I spot. There may be other issues as well.
Upvotes: 2