2014-01-28 27 views
0

我想從普及sql中的用戶定義函數中調用存儲過程。我有:如何從函數調用存儲過程

SET :retVal = Sales_SP_getNetSales('2013-1-1','2013-1-31','05',:NetSales); 

作爲我的函數中的調用,其中Sales_SP_getNetSales是存儲過程。這是做這件事的正確方法嗎?存儲過程返回一個整數。

回答

0

我找不到任何方式從UDF調用存儲過程。運行存儲過程需要EXEC(UTE)或CALL語句。但是,無法將存儲過程返回的結果集轉換爲Pervasive UDF中的變量。部分原因可能是因爲存儲過程無法保證只返回一個值。存儲過程在Pervasive中返回整個結果集。
您可能會考慮將存儲過程更改爲函數。從函數調用函數是可能的:

create function f2(:B integer) 
returns integer 
as 
begin 
return :B; 
end; 

CREATE FUNCTION f1(:A integer) 
RETURNS Integer 
AS 
BEGIN 
RETURN f2(:a); 
END; 

select f1(5) 
+0

很好地解釋了程序和函數之間的區別,現在我知道了。 – Charlesliam

相關問題