Вызов процедуры с laravel, хранящейся на сервере goddady, возвращает пустой массив

#php #mysql #sql #laravel #stored-procedures

Вопрос:

Всем добрый вечер, я вызываю хранимую процедуру с помощью laravel, все отлично работает локально на моей машине, но как только я развертываюсь на сервере (богиня), он отправляет мне пустой массив.

******************************* Хранимая процедура *******************************************

 DROP PROCEDURE IF EXISTS procedure_nouveautes; DELIMITER | CREATE PROCEDURE procedure_nouveautes(IN PAYS_ID INT, DEVISE_TO INT) BEGIN  DECLARE CATALOGUEID TEXT DEFAULT "";  DECLARE PRODUITID TEXT DEFAULT "";  DECLARE CATALOGUEPRODUITID TEXT DEFAULT "";  DECLARE PVMIN TEXT DEFAULT "";  DECLARE PVMAX TEXT DEFAULT "";  DECLARE PAYSID INT DEFAULT NULL;  DECLARE DEVISEVENTEID TEXT DEFAULT "";  DECLARE PRODUITTYPES TEXT DEFAULT "";   DECLARE PVMINCONVERTI DOUBLE DEFAULT 0;  DECLARE PVMAXCONVERTI DOUBLE DEFAULT 0;   DECLARE PVMINDECLINAISON DOUBLE DEFAULT 0;  DECLARE PVMAXDECLINAISON DOUBLE DEFAULT 0;      DECLARE TOTAL text DEFAULT "";  DECLARE FIN_LOOP_CURSOR_FOR_NOUVEAUTE BOOLEAN DEFAULT 0;    DECLARE FIN_LOOP_CURSOR_MARGE_PRODUIT BOOLEAN DEFAULT 0;  DECLARE RESULT_PRIX_MARGE_PRODUIT DOUBLE DEFAULT NULL;  DECLARE RESULT_PERCENT_MARGE_PRODUIT DOUBLE DEFAULT NULL;  DECLARE PRIX_MARGE_PRODUIT DOUBLE DEFAULT 0;  DECLARE PERCENT_MARGE_PRODUIT DOUBLE DEFAULT 0;  DECLARE RESULT_DEVISE_ID_MARGE_PRODUIT TEXT DEFAULT "";   DECLARE FIN_LOOP_CURSOR_MARGE_CATALOGUE BOOLEAN DEFAULT 0;  DECLARE RESULT_PRIX_MARGE_CATALOGUE DOUBLE DEFAULT NULL;  DECLARE RESULT_PERCENT_MARGE_CATALOGUE DOUBLE DEFAULT NULL;  DECLARE PRIX_MARGE_CATALOGUE DOUBLE DEFAULT 0;  DECLARE PERCENT_MARGE_CATALOGUE DOUBLE DEFAULT 0;  DECLARE RESULT_DEVISE_ID_MARGE_CATALOGUE TEXT DEFAULT "";    DECLARE CURSOR_FOR_NOUVEAUTE CURSOR FOR  SELECT catalogues.id, catalogues.pays_id,produits.id,produits.types, catalogue_produit.id, catalogue_produit.devise_vente_id,  MIN(catalogue_produit.prix_vente) AS min,   MAX(catalogue_produit.prix_vente) AS max   FROM catalogue_produit   INNER JOIN produits ON produits.id = catalogue_produit.produit_id   INNER JOIN catalogues ON catalogues.id = catalogue_produit.catalogue_id   WHERE catalogue_produit.est_nouveau = 1  GROUP BY catalogue_produit.produit_id;  DECLARE CONTINUE HANDLER FOR NOT FOUND SET FIN_LOOP_CURSOR_FOR_NOUVEAUTE = TRUE;  DROP TABLE IF EXISTS procedure_nouveautes_table_tmp;  CREATE TABLE procedure_nouveautes_table_tmp(  id INT NOT NULL AUTO_INCREMENT,  catalogue_id VARCHAR(255),  pays_id INT,  produit_id VARCHAR(255),  catalogue_produit_id VARCHAR(255),  prix_vente_min VARCHAR(255),  prix_vente_max VARCHAR(255),  primary key (id)  );  OPEN CURSOR_FOR_NOUVEAUTE;  REPEAT  FETCH CURSOR_FOR_NOUVEAUTE INTO CATALOGUEID, PAYSID, PRODUITID, PRODUITTYPES, CATALOGUEPRODUITID, DEVISEVENTEID,PVMIN, PVMAX;   IF NOT FIN_LOOP_CURSOR_FOR_NOUVEAUTE THEN   IF PRODUITTYPES = 1 THEN  BLOCK_1:BEGIN  SELECT MIN(prix_vente) INTO PVMINDECLINAISON FROM declinaisons WHERE produit_id = PRODUITID;  SELECT MIN(prix_vente) INTO PVMAXDECLINAISON FROM declinaisons WHERE produit_id = PRODUITID;  END BLOCK_1;  END IF;   BLOCK_2:BEGIN     DECLARE CURSOR_MARGE_PRODUIT CURSOR FOR  SELECT prix, percent, devise_id FROM marge_produits WHERE pays_id = PAYS_ID AND produit_id = PRODUITID;  DECLARE CONTINUE HANDLER FOR NOT FOUND SET FIN_LOOP_CURSOR_MARGE_PRODUIT = TRUE;   OPEN CURSOR_MARGE_PRODUIT;  REPEAT  FETCH CURSOR_MARGE_PRODUIT INTO RESULT_PRIX_MARGE_PRODUIT, RESULT_PERCENT_MARGE_PRODUIT, RESULT_DEVISE_ID_MARGE_PRODUIT;  IF RESULT_PRIX_MARGE_PRODUIT IS NOT NULL THEN  -- SET PRIX_MARGE_PRODUIT = RESULT_PRIX_MARGE_PRODUIT;  SELECT conversion_devise(RESULT_DEVISE_ID_MARGE_PRODUIT,   DEVISE_TO, PAYS_ID, RESULT_PRIX_MARGE_PRODUIT)   INTO PRIX_MARGE_PRODUIT;  END IF;   IF RESULT_PERCENT_MARGE_PRODUIT IS NOT NULL THEN  SET PERCENT_MARGE_PRODUIT = RESULT_PERCENT_MARGE_PRODUIT;  END IF;     UNTIL FIN_LOOP_CURSOR_MARGE_PRODUIT END REPEAT;   END BLOCK_2;    BLOCK_3:BEGIN     DECLARE CURSOR_MARGE_CATALOGUE CURSOR FOR  SELECT prix, percent, devise_id FROM marge_catalogues WHERE pays_id = PAYS_ID AND catalogue_id = CATALOGUEID;  DECLARE CONTINUE HANDLER FOR NOT FOUND SET FIN_LOOP_CURSOR_MARGE_CATALOGUE = TRUE;   OPEN CURSOR_MARGE_CATALOGUE;  REPEAT  FETCH CURSOR_MARGE_CATALOGUE INTO RESULT_PRIX_MARGE_CATALOGUE, RESULT_PERCENT_MARGE_CATALOGUE, RESULT_DEVISE_ID_MARGE_CATALOGUE;  IF RESULT_PRIX_MARGE_CATALOGUE IS NOT NULL THEN  -- SET PRIX_MARGE_CATALOGUE = RESULT_PRIX_MARGE_CATALOGUE;  SELECT conversion_devise(RESULT_DEVISE_ID_MARGE_CATALOGUE,   DEVISE_TO, PAYS_ID, RESULT_PRIX_MARGE_CATALOGUE)   INTO PRIX_MARGE_CATALOGUE;  END IF;   IF RESULT_PERCENT_MARGE_CATALOGUE IS NOT NULL THEN  SET PERCENT_MARGE_CATALOGUE = RESULT_PERCENT_MARGE_CATALOGUE;  END IF;     UNTIL FIN_LOOP_CURSOR_MARGE_CATALOGUE END REPEAT;   END BLOCK_3;   SELECT conversion_devise(DEVISEVENTEID,   DEVISE_TO, PAYS_ID, (PVMIN   PVMINDECLINAISON))   INTO PVMINCONVERTI;   SELECT conversion_devise(DEVISEVENTEID,   DEVISE_TO, PAYS_ID, (PVMAX   PVMAXDECLINAISON))   INTO PVMAXCONVERTI;   INSERT INTO   procedure_nouveautes_table_tmp  (catalogue_id, pays_id, produit_id, catalogue_produit_id, prix_vente_min, prix_vente_max)   VALUES(CATALOGUEID, PAYSID, PRODUITID, CATALOGUEPRODUITID,   (PVMINCONVERTI   PRIX_MARGE_PRODUIT   PRIX_MARGE_CATALOGUE   (PVMINCONVERTI * (PERCENT_MARGE_CATALOGUE / 100))     (PVMINCONVERTI * (PERCENT_MARGE_PRODUIT / 100))),   (PVMAXCONVERTI   PRIX_MARGE_PRODUIT   PRIX_MARGE_CATALOGUE   (PVMAXCONVERTI * (PERCENT_MARGE_CATALOGUE / 100))     (PVMAXCONVERTI * (PERCENT_MARGE_PRODUIT / 100)))  );   END IF;  UNTIL FIN_LOOP_CURSOR_FOR_NOUVEAUTE END REPEAT;  -- CLOSE CURSOR_FOR_NOUVEAUTE;  SELECT procedure_nouveautes_table_tmp.*, produits.*, catalogues.*, catalogue_produit.*  FROM procedure_nouveautes_table_tmp  INNER JOIN produits ON produits.id = procedure_nouveautes_table_tmp.produit_id   INNER JOIN catalogues ON catalogues.id = procedure_nouveautes_table_tmp.catalogue_id  INNER JOIN catalogue_produit ON catalogue_produit.id = procedure_nouveautes_table_tmp.catalogue_id; END|  

**************** Функция ***************************************************************

 DROP FUNCTION IF EXISTS conversion_devise; DELIMITER $ CREATE FUNCTION conversion_devise(  DEVISE_FROM INT, DEVISE_TO INT, PAYS_ID INT, MONTANT_A_CONVERTIR DOUBLE  ) RETURNS DOUBLE DETERMINISTIC BEGIN   DECLARE MONTANT_CONVERTI DOUBLE DEFAULT MONTANT_A_CONVERTIR;  DECLARE RATE_VALUE DOUBLE DEFAULT 1;   SELECT MultiplyRate INTO RATE_VALUE FROM `table_rates`   WHERE `ValidTo` gt;= current_timestamp()  AND `C_Currency_ID` = DEVISE_FROM   AND `C_Currency_ID_To` = DEVISE_TO   AND `C_Country_ID` = PAYS_ID   LIMIT 1;   IF RATE_VALUE IS NOT NULL THEN  SET MONTANT_CONVERTI = MONTANT_A_CONVERTIR * RATE_VALUE;  END IF;  RETURN (MONTANT_CONVERTI);  END$ DELIMITER ;   

***************** Позвоните с помощью laravel ***************************************************

 $nouveautes = DB::select('call procedure_nouveautes(?, ?)', [198, 337]);   

Мне нужна ваша помощь, пожалуйста

Комментарии:

1. Попробуйте изменить значение select на statement , чтобы увидеть, имеет ли это какое-либо значение?