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

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

DDD
Libérer: 2025-01-05 15:48:46
original
242 Les gens l'ont consulté

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

Passer une table en paramètre à une UDF SQL Server

Il est possible de passer une table en paramètre à une UDF scalaire dans SQL Server, utilisant des types de tables définis par l'utilisateur.

Création d'une table définie par l'utilisateur Type

Définissez un type de table pour représenter la structure de votre paramètre de table. Par exemple :

CREATE TYPE TableType AS TABLE (LocationName VARCHAR(50))
Copier après la connexion

Définition de l'UDF

Créez une UDF scalaire qui prend un paramètre du type de table défini par l'utilisateur. Le paramètre doit être déclaré comme READONLY. Par exemple :

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

Passer une variable de table

Dans SQL Server, vous pouvez créer une variable du type de table définie par l'utilisateur et la remplir avec les données de un tableau. Par exemple :

DECLARE @myTable TableType
INSERT INTO @myTable(LocationName) VALUES('aaa')
Copier après la connexion

Utilisation

Pour utiliser l'UDF avec une variable de table, transmettez la variable en paramètre. Par exemple :

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

Gestion des doublons et des NULL

Pour vous assurer qu'il n'y a pas de doublons ni de NULL dans votre table, vous pouvez inclure des vérifications pertinentes dans votre UDF :

CREATE FUNCTION Example(@TableName TableType READONLY)
RETURNS VARCHAR(50)
AS
BEGIN
    DECLARE @name VARCHAR(50)

    SELECT TOP 1 @name = LocationName 
    FROM @TableName 
    WHERE LocationName IS NOT NULL AND LocationName NOT IN (SELECT LocationName FROM @TableName WHERE LocationName IS NULL OR LocationName = @name)
    RETURN @name
END
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