Maison >base de données >tutoriel mysql >Puis-je transmettre une table en tant que paramètre à une UDF scalaire SQL Server ?

Puis-je transmettre une table en tant que paramètre à une UDF scalaire SQL Server ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2025-01-05 11:31:40859parcourir

Can I Pass a Table as a Parameter to a SQL Server Scalar UDF?

Passer des tables en tant que paramètres aux UDF SQL Server

Est-il possible de passer une table en tant que paramètre dans une UDF de scaler ?

Oui, il est possible de transmettre des tables en tant que paramètres dans les UDF du scaler. Cependant, tous les types de tables ne sont pas pris en charge.

Restrictions sur les types de tables

Selon la documentation de Microsoft, tous les types de données, y compris les types définis par l'utilisateur CLR et les types définis par l'utilisateur. types de table, peuvent être utilisés comme paramètres à l'exception du type de données d'horodatage.

Table définie par l'utilisateur Types

Pour passer une table en paramètre, vous devez créer un type de table défini par l'utilisateur. Par exemple :

CREATE TYPE TableType AS TABLE (LocationName VARCHAR(50))

Exemple UDF

L'UDF suivante prend un type de table défini par l'utilisateur comme paramètre :

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

Remarque que le paramètre doit être spécifié comme READONLY.

Exemple Utilisation

Pour utiliser l'UDF, déclarez une variable de type table définie par l'utilisateur et insérez-y des données :

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

Vous pouvez ensuite appeler l'UDF :

SELECT dbo.Example(@myTable)

Utiliser les données d'une table

Si vous avez des données dans une table que vous souhaitez passer à l'UDF, vous pouvez utiliser une variable pour stocker les données :

DECLARE @myTable TableType
INSERT INTO @myTable(field_name)
SELECT field_name_2 FROM my_other_table

Vous pouvez ensuite passer la variable à l'UDF :

SELECT dbo.Example(@myTable)

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