2017-12-28 9 views
1

Ich habe SQL-Tabelle mit Daten, wie untenPass mehr Parameter für SQL-Funktion

SnackID  Name 
    1   Chicken 
    2   Soda 
    3   Chocolate 
    4   IceCream 

Ich habe die unten benutzerdefinierte Funktion, die Argumente als String mit mehreren Werten, wie ‚Chicken‘, ‚Soda‘ annimmt.

Wenn ich versucht habe, diese Funktion aufzurufen, indem ich mehrere Werte an diese Variable übergebe, bekomme ich nicht das erwartete Ergebnis. Ich denke, es versucht, mehrere (kommagetrennte) Werte als einen einzelnen Wert zu suchen.

Eine andere mögliche Problemumgehung für das Übergeben dieser Werte?

Antwort

3

Ihre Vermutung ist richtig - wenn Sie eine einzelne Zeichenfolge mit durch Kommas getrennten Werten übergeben, behandelt SQL Server sie als einen einzelnen Zeichenfolgenwert.

Verwenden table valued parameter statt:

CREATE TYPE SnackCode As Table (
    Name NVARCHAR(50) 
); 
GO; 
CREATE FUNCTION GetSnackCodes (
    @myValues SnackCode 
) 
RETURNS @SnacksCodes TABLE (
     mySnackCoded int NULL 
) 
AS 
BEGIN 
    insert into @SnacksCodes 
     select SnackID 
     from Snack 
     where Name In (select Name from @myValues) 
return ; 
END; 
GO 
2

können Sie spalten Komma getrennt Wert und speichern, die in temporären Tabelle dann diesen Tabellenwert Ergebnis passieren

+0

fügen Sie bitte ein Beispiel abfragen –