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
Libérer: 2025-01-06 03:34:40
original
621 Les gens l'ont consulté

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
Copier après la connexion

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
Copier après la connexion

Usage

Un exemple d'utilisation :

DECLARE @myTable TableType
INSERT INTO @myTable(LocationName) VALUES('aaa')
SELECT * FROM @myTable

SELECT dbo.Example(@myTable)
Copier après la connexion

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
Copier après la connexion

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
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal