sql >> Database teknologi >  >> RDS >> Sqlserver

Send tabel som parameter til sql server UDF

Du kan dog ikke noget bord. Fra dokumentation:

For Transact-SQL-funktioner er alle datatyper, inklusive CLR brugerdefinerede typer og brugerdefinerede tabeltyper, tilladt undtagen tidsstempeldatatypen.

Du kan bruge brugerdefinerede tabeltyper .

Eksempel på brugerdefineret tabeltype:

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

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

Så hvad du kan gøre er at definere din tabeltype, for eksempel TableType og definere den funktion, der tager parameteren af ​​denne type. Et eksempel på en funktion:

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

Parameteren skal være LÆSEKUN. Og eksempelbrug:

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

SELECT dbo.Example(@myTable)

Afhængigt af hvad du vil opnå, kan du ændre denne kode.

EDIT: Hvis du har data i en tabel, kan du oprette en variabel:

DECLARE @myTable TableType

Og tag data fra din tabel til variablen

INSERT INTO @myTable(field_name)
SELECT field_name_2 FROM my_other_table


  1. Hvordan kan jeg skrive SQL i Oracle i mit tilfælde?

  2. pyodbc.connect() virker, men ikke sqlalchemy.create_engine().connect()

  3. Rekursiv forespørgsel i Oracle

  4. Sådan overvåger du MySQL-implementeringer med Prometheus &Grafana på ScaleGrid