Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Przekaż tabelę jako parametr do UDF serwera sql

Możesz jednak nie mieć żadnego stolika. Z dokumentacji:

W przypadku funkcji Transact-SQL wszystkie typy danych, w tym typy zdefiniowane przez użytkownika i tabele zdefiniowane przez użytkownika, są dozwolone z wyjątkiem typu datownika.

Możesz używać typów tabel zdefiniowanych przez użytkownika .

Przykład typu tabeli zdefiniowanej przez użytkownika:

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

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

Możesz więc zdefiniować typ tabeli, na przykład TableType i zdefiniuj funkcję, która przyjmuje parametr tego typu. Przykładowa funkcja:

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

Parametr musi być TYLKO DO ODCZYTU. I przykładowe użycie:

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

SELECT dbo.Example(@myTable)

W zależności od tego, co chcesz osiągnąć, możesz zmodyfikować ten kod.

EDYTUJ: Jeśli masz dane w tabeli, możesz utworzyć zmienną:

DECLARE @myTable TableType

I przenieś dane ze swojej tabeli do zmiennej

INSERT INTO @myTable(field_name)
SELECT field_name_2 FROM my_other_table


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Zapytanie SQL dla 7-dniowej średniej kroczącej w SQL Server

  2. Jak programowo utworzyć tabelę połączoną ODBC z widokiem SQL Server i czy można ją edytować?

  3. Jak wyświetlić listę plików w folderze z SQL Server

  4. Zakończenie wsparcia dla SQL Server 2008. Co teraz?

  5. Utwórz bazę danych w SQL Server (T-SQL)