2013-11-23 81 views
0

我在MySQL中有2個存儲過程。我想打電話從另一個但我需要一些幫助,語法MySql嵌套存儲過程調用

下面是步驟1 FindPreviousDate

DELIMITER $$ CREATE PROCEDURE `FindPreviousDate`(IN eventdate DATETIME, IN lookbackDays INT, IN symbol VARCHAR(20)) 
BEGIN 
SELECT * 
FROM Price a 
WHERE a.eventDate between (eventDate - interval lookbackDays day) and (eventdate - interval 1 day) and a.symbol = symbol 
ORDER BY a.eventDate DESC 
LIMIT 1; 
END 

下面是步驟2 FindCloseEvent

CREATE PROCEDURE `FindCloseEvent`(IN startdate DATETIME, IN enddate DATETIME,IN symbol VARCHAR(20), IN cutoff DOUBLE) 
BEGIN 
SELECT * 
FROM Price a 
WHERE a.eventDate between startdate and enddate and 
(SELECT COUNT(*) from Price b where b.eventDate = a.eventDate and b.closePrice < cutoff and a.symbol = b.symbol and 
(SELECT COUNT(*) from Price c where c.eventDate = (b.eventDate - interval 1 day) and c.closePrice >= cutoff and b.symbol = c.symbol)); 
END 

我想將這段代碼在程序2中使用程序1的結果

(b.eventDate - interval 1 day) 

我需要獲取幫助語法正確。我甚至不確定mySql是否允許我所要求的。

謝謝!

回答

0

在程序中,您可以使用OUT變量,該變量被填充並在過程外部可用。 或
由於MySQL過程沒有返回值。您需要儲存功能來實現此目的。

使用給定到下面鏈接的例子,從你的過程2調用功能1 http://www.java2s.com/Code/SQL/Procedure-Function/Callanotherfunction.htm

可以的功能1的結果甚至存儲到過程2的一些變量,後來在查詢

使用