Passer des tables en tant que paramètres aux UDF SQL Server
Dans SQL Server, il est possible de transmettre des tables en tant que paramètres aux fonctions scalaires définies par l'utilisateur (UDF). Cependant, cette fonctionnalité n'est pas limitée à tous les types de tables.
Types de tables autorisés
Selon la documentation Microsoft, tous les types de données sont autorisés pour les paramètres UDF, à l'exception du type de données d’horodatage. Par conséquent, les types de tableaux définis par l'utilisateur peuvent être utilisés comme paramètres.
Création de types de tableaux définis par l'utilisateur
Pour illustrer, considérons le type de tableau suivant :
CREATE TYPE TableType AS TABLE (LocationName VARCHAR(50)) GO
Exemple UDF
Maintenant, définissons une UDF qui accepte un paramètre de type TableType :
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
Usage
Un exemple d'utilisation :
DECLARE @myTable TableType INSERT INTO @myTable(LocationName) VALUES('aaa') SELECT * FROM @myTable SELECT dbo.Example(@myTable)
Restriction facultative à Single -Tableaux à colonnes
Si vous souhaitez limiter le paramètre aux tableaux avec une seule colonne, vous pouvez modifier la définition UDF pour inclure la vérification suivante :
CREATE FUNCTION Example( @TableName TableType READONLY) RETURNS VARCHAR(50) AS BEGIN IF (SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = @TableName AND TABLE_SCHEMA = 'dbo') > 1 RETURN ERROR(1, 1, 'Invalid parameter: table must have a single column.'); DECLARE @name VARCHAR(50) SELECT TOP 1 @name = LocationName FROM @TableName RETURN @name END
Remplir les variables à partir de tables existantes
Pour transmettre les données d'une table existante au paramètre UDF, vous pouvez utiliser une variable :
DECLARE @myTable TableType INSERT INTO @myTable(field_name) SELECT field_name_2 FROM my_other_table
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!