【问题标题】:Magento: Create Stored ProcedureMagento:创建存储过程
【发布时间】:2011-09-11 01:30:02
【问题描述】:

我正在尝试创建一个 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();

当然,两者之间还有一些其他代码,但简化并没有改变错误。 我的猜测是,这与分界线以及 PDO/Magento 如何对待它们有关。谢谢。

【问题讨论】:

  • PHP 5.3、Windows 7 64、Apache 2

标签: stored-procedures magento pdo


【解决方案1】:

我想通了。

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

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

所以,我最终得到:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-11-11
    • 2021-12-08
    • 2017-10-14
    • 2021-07-10
    • 2015-08-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多