sql >> Database >  >> RDS >> Sqlserver

Geef tabel door als parameter in sql-server UDF

U kunt echter geen enkele tafel. Uit documentatie:

Voor Transact-SQL-functies zijn alle gegevenstypen, inclusief door de gebruiker gedefinieerde CLR-typen en door de gebruiker gedefinieerde tabeltypen, toegestaan, behalve het gegevenstype tijdstempel.

U kunt door de gebruiker gedefinieerde tabeltypen . gebruiken .

Voorbeeld van een door de gebruiker gedefinieerd tabeltype:

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

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

U kunt dus uw tabeltype definiëren, bijvoorbeeld TableType en definieer de functie die de parameter van dit type nodig heeft. Een voorbeeldfunctie:

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

De parameter moet ALLEEN LEZEN zijn. En voorbeeldgebruik:

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

SELECT dbo.Example(@myTable)

Afhankelijk van wat je wilt bereiken, kun je deze code aanpassen.

BEWERKEN: Als u gegevens in een tabel heeft, kunt u een variabele maken:

DECLARE @myTable TableType

En neem gegevens van uw tabel naar de variabele

INSERT INTO @myTable(field_name)
SELECT field_name_2 FROM my_other_table


  1. Gebruik van FLASHBACK in Oracle

  2. Hoe alle landinstellingen in MariaDB te tonen

  3. Converteer 'datetime2' naar 'datetimeoffset' in SQL Server (T-SQL-voorbeelden)

  4. SQL Server-fout:tekenreeks of binaire gegevens worden afgekapt