sql >> Databáze >  >> RDS >> Sqlserver

Jak vrátit proměnnou tabulky z funkce (UDF)?

Nepoužíváte DECLARE při vrácení proměnné tabulky. Definujte výsledkovou tabulku v RETURNS klauzule.

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

Aktualizovat

Co takhle vrátit konečný výsledek v uložené proceduře?

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
    )

Aktualizovat

Zkuste to. Vytvořte proměnnou tabulky v rámci UDF pro uložení výsledků prvního výběru a poté vložte výsledek posledního dotazu do návratové hodnoty.

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. Jak přimět PostgreSQL vložit řádek do tabulky při odstranění z jiné tabulky?

  2. Převeďte BufferedInputStream na obrázek

  3. Spouštění Vites a MySQL pomocí ClusterControl

  4. Haversine Fomula s MySQL získejte místa v okolí