Heim >Datenbank >MySQL-Tutorial >Wie kann ich eine Tabelle als Parameter an eine skalare SQL Server-UDF übergeben?

Wie kann ich eine Tabelle als Parameter an eine skalare SQL Server-UDF übergeben?

DDD
DDDOriginal
2025-01-05 15:48:46242Durchsuche

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

Übergabe einer Tabelle als Parameter an eine SQL Server-UDF

Es ist möglich, eine Tabelle als Parameter an eine skalare UDF zu übergeben SQL Server unter Verwendung benutzerdefinierter Tabellentypen.

Erstellen einer benutzerdefinierten Tabelle Typ

Definieren Sie einen Tabellentyp, der die Struktur Ihres Tabellenparameters darstellt. Zum Beispiel:

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

Definieren der UDF

Erstellen Sie eine skalare UDF, die einen Parameter des benutzerdefinierten Tabellentyps annimmt. Der Parameter muss als READONLY deklariert werden. Zum Beispiel:

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

Übergabe einer Tabellenvariablen

In SQL Server können Sie eine Variable des benutzerdefinierten Tabellentyps erstellen und sie mit Daten aus füllen ein Tisch. Zum Beispiel:

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

Verwendung

Um die UDF mit einer Tabellenvariablen zu verwenden, übergeben Sie die Variable als Parameter. Zum Beispiel:

SELECT dbo.Example(@myTable)

Umgang mit Duplikaten und NULL-Werten

Um sicherzustellen, dass Ihre Tabelle keine Duplikate und NULL-Werte enthält, können Sie relevante Prüfungen in Ihre UDF aufnehmen:

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

Das obige ist der detaillierte Inhalt vonWie kann ich eine Tabelle als Parameter an eine skalare SQL Server-UDF übergeben?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn