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