Übergabe von Tabellen als Parameter an SQL Server-UDFs
In SQL Server ist es möglich, Tabellen als Parameter an skalare benutzerdefinierte Funktionen zu übergeben (UDFs). Diese Funktion ist jedoch nicht auf alle Tabellentypen beschränkt.
Zulässige Tabellentypen
Laut Microsoft-Dokumentation sind alle Datentypen für UDF-Parameter zulässig, mit Ausnahme von Zeitstempel-Datentyp. Folglich können benutzerdefinierte Tabellentypen als Parameter verwendet werden.
Benutzerdefinierte Tabellentypen erstellen
Betrachten Sie zur Veranschaulichung den folgenden Tabellentyp:
CREATE TYPE TableType AS TABLE (LocationName VARCHAR(50)) GO
UDF-Beispiel
Nun definieren wir ein UDF, das akzeptiert einen Parameter vom Typ 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
Verwendung
Ein Beispiel für die Verwendung:
DECLARE @myTable TableType INSERT INTO @myTable(LocationName) VALUES('aaa') SELECT * FROM @myTable SELECT dbo.Example(@myTable)
Optionale Einschränkung auf Einspaltige Tabellen
Wenn Sie den Parameter auf Tabellen mit einer einzelnen Spalte beschränken möchten In der Spalte können Sie die UDF-Definition so ändern, dass sie die folgende Prüfung enthält:
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
Variablen aus vorhandenen Tabellen füllen
Um Daten aus einer vorhandenen Tabelle an die UDF zu übergeben Parameter können Sie eine Variable verwenden:
DECLARE @myTable TableType INSERT INTO @myTable(field_name) SELECT field_name_2 FROM my_other_table
Das obige ist der detaillierte Inhalt vonKann ich Tabellen als Parameter an SQL Server-UDFs übergeben?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!