Magento:创建存储过程

时间:2011-06-08 16:54:02

标签: stored-procedures magento pdo

我正在尝试创建一个Magento模块安装程序,它将依次创建一个存储过程。

该过程的代码已经运行:Toad,phpmyadmin和mysql.exe命令行。它适用于所有3.但是,当Magento在安装过程中执行它时它会失败。

错误:

SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax;

Magento代码:

    $installer = $this;
    $installer->startSetup();
    $sql = <<<____SQL
       DELIMITER // 

       CREATE PROCEDURE GetStuff(
           IN pSomeId int(11)
       )
       BEGIN
         DECLARE pOtherId INT;

       SELECT some_var INTO pOtherId FROM some_table WHERE id = pSomeId;
       END;//
       DELIMITER ;
       ____SQL;

     $installer->run($sql);
     $installer->endSetup();
当然,还有其他一些代码,但简化并没有改变错误。 我的猜测是它与Delimeters以及PDO / Magento如何对待它们有关。谢谢。

1 个答案:

答案 0 :(得分:6)

我明白了。

我不需要使用任何分隔符,PDO可以自己处理它们。

但我确实需要将方法从查询(由安装程序使用)切换到exec。

所以,我最终得到了:

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