Мне нужно преобразовать этот старый код 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?
Заранее спасибо,