Magento: хранимые процедуры в сценариях обновления SQL - PullRequest
1 голос
/ 08 августа 2011

Я пытался поместить шаг создания хранимой процедуры в мой скрипт обновления SQL в Magento.как

$this->startSetup();
$sql = <<< __SQLPRC
CREATE PROCEDURE my_proc(
    IN length int
    ,IN column_used_for varchar(50)
    ,OUT return_id bigint
)
BEGIN
    DECLARE count_unused INT;
    SET count_unused = 0;
    select 
            id into return_id
        from 
            my_table
        where 
            used_status=0
            limit 1;

    if length(return_id) = length 
    then
        update my_table
            set 
                used_status=1
            where 
                id = return_id;
    else
        set return_id = 0;
    end if;
END;
__SQLPRC;

try {
$this->run($sql);
}
catch(Exception $e)
{ echo "<pre>" . $e->getTraceAsString(); }

$this->endSetup();

Что я сделал из отладки, так это то, что Magento просто захватывает SQL до первой точки с запятой ";" Может кто-нибудь помочь мне с этим?

1 Ответ

3 голосов
/ 08 августа 2011

Вы поместили код хранимой процедуры как: -

$this->startSetup();
$sql = <<< __SQLPRC
...

Это должно быть следующим образом: -

$this->startSetup();
$sql = <<<__SQLPRC
...

Это должно работать сейчас, так как не должно быть никакихпробел после "<<<" в соответствии с синтаксисом Heredoc ограничения строк PHP.

Надеюсь, это поможет.


Обновленный ответ: -

Можете ли вы попробовать использовать этот код: -

$write = Mage::getSingleton('core/resource')->getConnection('core_write');
$write->exec($sql);

вместо: -

$this->run($sql);

Я видел некоторые проблемыранее об этом на Magento.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...