我是新來的mysql,我試圖在存儲過程(有點像嵌套存儲過程)中使用多個存儲過程。我的得到的輸出是設定任何幫助空,將不勝感激存儲過程中的多個存儲過程,只返回第一個存儲過程輸出變量
我的存儲的過程代碼塊
Outer stored Procedure
DELIMITER $$
USE `test`$$
DROP PROCEDURE IF EXISTS `GetHsi`$$
CREATE DEFINER=`root`@`localhost`
PROCEDURE `GetHsi`
(
IN subregion VARCHAR(255),
OUT inc DOUBLE,
OUT dcl DOUBLE
)
BEGIN
CALL GetSubrgnSntmt('I', subregion, @Inc_Sntmt);
CALL GetSubrgnSntmt('D', subregion, @Dec_Sntmt);
SELECT @Inc_Sntmt INTO inc;
SELECT @Dcln_Sntmt INTO Dcl;
SELECT inc, dcl;
END$$
DELIMITER ;
inner stored Procedure
USE `test`$$
DROP PROCEDURE IF EXISTS `GetSubrgnSntmt`$$
CREATE DEFINER=`root`@`localhost`
PROCEDURE `GetSubrgnSntmt`
(
IN Sntmt VARCHAR(25),
IN subregion VARCHAR(255),
OUT sub_Sntmt INT
)
BEGIN
DECLARE Total INT DEFAULT 1;
DECLARE subtotal INT DEFAULT 1 ;
DECLARE sub_sntmt DOUBLE DEFAULT 1;
SELECT COUNT(Cust_Id) INTO Total
FROM test.`jnk_test`
WHERE buy_cty = subregion ;
SELECT COUNT(Cust_Id) INTO subtotal
FROM test.`jnk_test`
WHERE Sntmt_2 =Sntmt
AND buy_cty = subregion ;
SET sub_Sntmt = (subtotal/total) * 100;
SELECT sub_sntmt;
END$$
DELIMITER
Output
CALL gethsi('central hyderabad',@inc, @dcl);
SELECT @inc, @dcl;
===========
@inc| @dcl
===========
null| null
我打這個並不能在這個時刻繼續我不知道我要去的地方錯了好心的幫助。
請不要標記與SQL Server MySQL的問題。 –
您需要回答的第一個問題是內部過程是否在自己調用時正常工作。你在變量中進行一些不必要的變換,並且你的標識符有一些不匹配的地方(例如Total和Total),但是這些東西都不應該破壞代碼。內部過程本身是否正常工作? –
嗨亞倫,謝謝你指出,我將不會在未來mis mis tagging ..謝謝 –