Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
mysql存储过程错误(1172,';结果由多行组成';)_Mysql_Django_Stored Procedures - Fatal编程技术网

mysql存储过程错误(1172,';结果由多行组成';)

mysql存储过程错误(1172,';结果由多行组成';),mysql,django,stored-procedures,Mysql,Django,Stored Procedures,当尝试从django运行以下存储过程时,我得到一个OperationError(1172,“结果由多行组成”),知道我可能做错了什么吗 -- -------------------------------------------------------------------------------- -- Routine DDL -- Note: comments before and after the routine body will not be stored by the serve

当尝试从django运行以下存储过程时,我得到一个OperationError(1172,“结果由多行组成”),知道我可能做错了什么吗

-- --------------------------------------------------------------------------------
-- Routine DDL
-- Note: comments before and after the routine body will not be stored by the server
-- --------------------------------------------------------------------------------
DELIMITER $$

CREATE DEFINER=`root`@`localhost` PROCEDURE `UpdatePrices`(IN storeId int, IN bottleSize VARCHAR(50))
BEGIN
    DECLARE amount DECIMAL(10,2); DECLARE isCustom INT DEFAULT 0;
    DECLARE changeType VARCHAR(50) DEFAULT 'State'; DECLARE updateType INT DEFAULT 0;

        IF bottleSize = '1000 Ml' THEN
            SELECT S1000IncreaseChoices INTO changeType FROM store_store WHERE StoreID = storeId;

            IF changeType = 'State' THEN
                SELECT updateType = 0;
            END IF;

            IF changeType = 'Flat' THEN
                SELECT S1000IncreaseAmount INTO amount FROM store_store WHERE StoreID = storeId;
                SELECT updateType = 1;
            END IF;


            IF changeType = 'Percent' THEN
                SELECT 1 - S1000IncreaseAmount/100 INTO amount FROM store_store WHERE StoreID = storeId;
                SELECT updateType = 2;
            END IF;
        END IF;

        IF updateType = 0 THEN
            update store_storeliquor SL 
            inner join liquor_liquor LL
            on liquorID_id = id
            set StorePrice = ShelfPrice
            where BottleSize = bottleSize
            and storeID_id = storeId
            and custom = 0;
        END IF;

        IF updateType = 1 THEN
            update store_storeliquor SL 
            inner join liquor_liquor LL
            on liquorID_id = id
            set StorePrice = OffPremisePrice + amount
            where BottleSize = bottleSize
            and storeID_id = storeId
            and custom = 0;
        END IF;

        IF updateType = 1 THEN
            update store_storeliquor SL 
            inner join liquor_liquor LL
            on liquorID_id = id
            set StorePrice = OffPremisePrice / amount
            where BottleSize = bottleSize
            and storeID_id = storeId
            and custom = 0;
        END IF;



END
我不确定这是否重要,但我启动存储过程如下:

def priceupdate(request, store_id):

    cursor = connection.cursor()
    cursor.callproc("UpdatePrices", (store_id, '1000 ML'))
    cursor.close()
    return HttpResponseRedirect(request.META.get('HTTP_REFERER'))

您的SELECT…INTO查询将给出包含多条记录的结果集。WHERE筛选器不正确-它们比较两个相同的值
StoreID=StoreID
。将storeId int中的重命名为另一个名称。例如-在storeId_参数int中

查询将如下所示-

SELECT S1000IncreaseChoices INTO changeType FROM store_store WHERE StoreID = storeId_param;

是的,这就解决了。现在我要弄清楚为什么代码没有按它应该做的做。