Magento:创建存储过程
Posted
技术标签:
【中文标题】Magento:创建存储过程【英文标题】:Magento: Create Stored Procedure 【发布时间】: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 【参考方案1】:我想通了。
我不需要使用任何分隔符,PDO 可以自己处理它们。
但我确实需要将方法从查询(由安装程序使用)切换到执行。
所以,我最终得到:
$write = Mage::getSingleton('core/resource')->getConnection('core_write');
$write->exec($sql);
【讨论】:
以上是关于Magento:创建存储过程的主要内容,如果未能解决你的问题,请参考以下文章