PHP в MySQL Процедура - PullRequest
       31

PHP в MySQL Процедура

0 голосов
/ 10 июля 2019

Мне нужно преобразовать этот старый код PHP в процедуру MySQL. Я не очень знаком с этим, я пытался сделать все возможное, но у меня есть некоторые ошибки

Это код PHP:

    $bl = new Application_Model_Expedition_Bl(); //correspond to "expedition_bl" table
    $blRetrieved = $bl->fetchAll();
    $idBlRetrieved = array_map(function($e) {
        return is_object($e) ? $e->id : $e['Title'];
    }, $blRetrieved);

    $onGoing = false;

    $eqBl = new Application_Model_Stock_Equipement_Bl(); //correspond to "equipement_bl" table

    $eqBlRetrieved = $eqBl->fetchAll();

    foreach($eqBlRetrieved as $e){
        if(strval($e->getIsPresent()) !== "1"){
            $onGoing = true;
        }
        if($onGoing){
            $eqToModify[] = $e;
        }
        $onGoing = false;
    }

        $eqSt = new Application_Model_Stock_Equipement_Station(); //correspond to "equipement_station" table

        foreach($eqToModify as $e){
            $bl->find($e->getIdBl());
            $bl->setStatut('On going');
            $bl->save();

            $equipTemp = $eqSt->fetchAll('id_equipement = ?', $e->getIdEquipement());
            if(isset($equipTemp[0])){
                $idEs = $equipTemp[0]->getId();
                $eqSt->find($idEs);
                $eqSt->setIdBl($e->getIdBl());
                $eqSt->save();
            }
        } 

И это моя процедура, но она не запускается (ошибка при первом объявлении)

DELIMITER $$
CREATE PROCEDURE maj_bls()
BEGIN
   DECLARE @eqBlRetrieved CURSOR FOR 
      SELECT id_bl, id_equipement
      FROM equipement_bl
      WHERE is_present != 1
    ;
OPEN eqBlRetrieved;
my_loop:
LOOP
    FETCH NEXT FROM @eqBlRetrieved INTO @id_bl, @id_equipement;
        UPDATE bl SET statut = 'On going' WHERE id = @id_bl
        SELECT @temp:=id FROM equipement_station WHERE id_equipement = @id_equipement
        IF(ISNULL(temp), 0, 1)
        @temp:=2
        ELSE
            UPDATE equipement_station set id_bl = @id_bl where id = @temp
        END IF;
END LOOP;
CLOSE eqBlRetrieved;
END $$

DELIMITER ;

Кроме того, как запустить этот скрипт? Можем ли мы запустить его как обычный скрипт SQL?

Заранее спасибо,

...