Passer des tables en tant que paramètres aux UDF SQL Server
Il est possible de passer une table en tant que paramètre dans une UDF scalaire SQL Server. Cependant, certaines restrictions s'appliquent, comme indiqué dans la documentation : tous les types de données sont autorisés sauf l'horodatage. Pour surmonter cette limitation, vous pouvez créer des types de tables définis par l'utilisateur (UDTT).
Voici un exemple d'UDTT nommé TableType :
CREATE TYPE TableType AS TABLE ( LocationName VARCHAR(50) );
Avec un UDTT défini, vous pouvez créer un fonction qui accepte un paramètre de ce type :
CREATE FUNCTION Example(@TableName TableType READONLY) RETURNS VARCHAR(50) AS BEGIN DECLARE @name VARCHAR(50); SELECT TOP 1 @name = LocationName FROM @TableName; RETURN @name; END;
Notez que le paramètre est défini comme READONLY. Pour utiliser cette fonction, vous pouvez créer une variable de l'UDTT et y insérer des données :
DECLARE @myTable TableType; INSERT INTO @myTable(LocationName) VALUES('aaa'); SELECT * FROM @myTable;
Vous pouvez maintenant appeler la fonction Exemple et passer la variable en paramètre :
SELECT dbo.Example(@myTable);
Pour votre besoin spécifique de renvoyer une liste CSV de valeurs à partir d'une table, vous pouvez modifier la fonction en conséquence. De plus, vous pouvez effectuer un filtrage au sein de la fonction, par exemple en vérifiant les valeurs nulles et les doublons.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!