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

Jak zwrócić zmienną tabeli z funkcji (UDF)?

Nie używasz DECLARE podczas zwracania zmiennej tabeli. Zdefiniuj tabelę wyników w RETURNS klauzula.

CREATE Function GetFinancials ()
RETURNS @financials TABLE
(
  [a bunch of variable declarations in here]
)
AS
BEGIN
    insert into @Financials
    [big old SELECT query here - this all works fine, and populates @Financials]

    RETURN
END

Aktualizacja

Co powiesz na zwrócenie końcowego wyniku w procedurze składowanej?

create procedure uspGetFinanicals
as
  declare @financial table
  (
    [table definition here]
  )

  insert into @financial
  select dbo.GetFinancials()

  select * 
    from @Financials f1
    where f1.TransactionDate = (
        select MAX(TransactionDate)
        from @Financials
        where SalesDocumentItemID = f1.SalesDocumentItemID
    )

Aktualizacja

Spróbuj tego. Utwórz zmienną tabeli w UDF, aby przechowywać wyniki pierwszego wyboru, a następnie wstaw wynik ostatniego zapytania do wartości zwracanej.

CREATE Function GetFinancials ()
RETURNS @financials TABLE
(
  [a bunch of variable declarations in here]
)
AS
BEGIN
    declare @table table([a bunch of variable declarations in here])
    insert into @table
    [big old SELECT query here - this all works fine, and populates @Financials]

    insert into @Financials
    select * 
      from @table f1
      where f1.TransactionDate = (
        select MAX(TransactionDate)
        from @table
        where SalesDocumentItemID = f1.SalesDocumentItemID
      )

    RETURN
END



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Przedstawiamy nową funkcję — raport dotyczący wzrostu bazy danych Spotlight Cloud

  2. Jak zmienić domyślny język dla SQL Server?

  3. SQL Server:klauzula GROUP BY, aby uzyskać wartości oddzielone przecinkami

  4. Funkcja AWS Lambda do połączenia z SQL Server za pomocą Pythona

  5. SQL Połącz dwie kolumny w instrukcji Select