Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Làm thế nào để trả về một biến bảng từ một hàm (UDF)?

Bạn không sử dụng DECLARE khi trả về một biến bảng. Xác định bảng kết quả trong RETURNS mệnh đề.

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

Cập nhật

Làm thế nào về việc trả lại kết quả cuối cùng trong một thủ tục được lưu trữ?

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
    )

Cập nhật

Thử cái này. Tạo một biến bảng trong UDF để lưu trữ kết quả của lần chọn đầu tiên, sau đó chèn kết quả của truy vấn cuối cùng vào giá trị trả về.

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. C # / SQL:sao lưu và khôi phục bằng cách sao chép và thay thế các tệp cơ sở dữ liệu?

  2. SQL Server 2005 - nhóm các giá trị, chỉ hiển thị các thay đổi

  3. ADO.Net SQLCommand.ExecuteReader () làm chậm hoặc treo

  4. Các trang và đối chiếu mã SQL Server

  5. Thực hiện Liên minh nếu bảng có những tên này tồn tại