MySQL存储过程有一个(OUT)值,请求两个值?

时间:2016-11-22 17:25:48

标签: mysql

我得到了这个上帝可怕的错误,我无法弄清楚我的生活,每当我运行以下存储过程时,它首先请求两个变量,即使我只声明一个作为一个出。如果我删除所有输入/输出并将其设置为无输入,它仍然会请求两个输入。其中的值总是@A = null,@ B = 0.00

我完全不知道造成这种情况的原因,任何帮助都会受到极大的赞赏(它可能是一个愚蠢的东西,如错过的半音或语法错误,但我看起来并且不能什么都看。 (代码应该遍历数据表并返回值的总和,它是一个学校作业,因此在这种情况下它必须是一个过程(所以没有SELECT SUM(N)FROM TABLE))

DELIMITER $$
CREATE PROCEDURE P_TOTAL_PRICES (OUT  n_total_price DOUBLE(9,2))
BEGIN
-- declare primitives
    DECLARE PROD_PRICE DOUBLE(9,2);
    DECLARE FOUND BOOLEAN;

-- declare cursor for loop illiteration. 
    DECLARE SUM_PRODUCTS cursor for
    SELECT prices FROM PRODUCT;

    -- declare end if variable for cursor
    DECLARE CONTINUE HANDLER FOR NOT FOUND
    SET FOUND = FALSE;

-- set core field vars and continue. 
    SET FOUND = TRUE;
    OPEN SUM_PRODUCTS;
    SET n_total_price=0; -- clean previous queries

    FETCH SUM_PRODUCTS INTO PROD_PRICE;
        WHILE FOUND DO

        SET n_total_price = n_total_price + PROD_PRICE;
        FETCH SUM_PRODUCTS INTO PROD_PRICE;
    END WHILE;

CLOSE SUM_PRODUCTS;
END
$$

DROP PROCEDURE P_TOTAL_PRICES;

CALL P_SELECT_TOTAL_SALARY(@A, @B);

Select @A;
SELECT @B;

0 个答案:

没有答案