Maison >base de données >tutoriel mysql >Puis-je transmettre des tables en tant que paramètres aux UDF SQL Server ?

Puis-je transmettre des tables en tant que paramètres aux UDF SQL Server ?

DDD
DDDoriginal
2025-01-06 03:34:40622parcourir

Can I Pass Tables as Parameters to SQL Server UDFs?

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn