2016-11-15 46 views
0

集我有一個SQL函數調用compare_two_regions返回的數據類型BIT,我想打電話給一個叫做compare_two_series功能該功能的結果。 我簡化了這個功能,我只想返回compare_two_regions函數的值。不過我想調用一個循環下compare_two_regions功能,但即使在這種簡單的情況:SQL:不準從函數返回

DELIMITER $$ 

create function compare_two_series(serieA varchar(255), serieB varchar(255)) 
returns BIT 
begin 
declare result BIT; 

/*falta ver*/ 
SELECT P1.x1,P1.y1,P1.x2,P1.y2,P2.x1,P2.y1,P2.x2,P2.y2 
FROM region as P1, region as P2 
WHERE P1.region.series_id = serieA AND P2.region.series_id = serieB; 

SELECT compare_two_regions(P1.x1,P1.y1,P1.x2,P1.y2,P2.x1,P2.y1,P2.x2,P2.y2) into result; 
return result; 
end$$ 
DELIMITER ; 

我收到以下錯誤:Not allowed to return a result set from a function

回答

1

您可以嘗試改變這種

SELECT P1.x1,P1.y1,P1.x2,P1.y2,P2.x1,P2.y1,P2.x2,P2.y2 
FROM region as P1, region as P2 
WHERE P1.region.series_id = serieA AND P2.region.series_id = serieB; 

SELECT compare_two_regions(P1.x1,P1.y1,P1.x2,P1.y2,P2.x1,P2.y1,P2.x2,P2.y2) into result; 

至此

SELECT compare_two_regions(P1.x1,P1.y1,P1.x2,P1.y2,P2.x1,P2.y1,P2.x2,P2.y2) into result 
FROM region as P1, region as P2 
WHERE P1.region.series_id = serieA AND P2.region.series_id = serieB; 

如果結果查詢返回多於一行。如果你想使用循環,你需要設置一個遊標。