djd*_*jdy 5 pdo stored-procedures magento
我正在尝试创建一个Magento模块安装程序,它将依次创建一个存储过程.
该过程的代码已经运行:Toad,phpmyadmin和mysql.exe命令行.它适用于所有3.但是,当Magento在安装过程中执行它时,它会失败.
错误:
SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax;
Run Code Online (Sandbox Code Playgroud)
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();
Run Code Online (Sandbox Code Playgroud)
当然,介于两者之间还有一些其他代码,但简化并没有改变错误.我的猜测是它与Delimeters以及PDO/Magento如何对待它们有关.谢谢.
我想到了.
我不需要使用任何分隔符,PDO可以自己处理它们.
但我确实需要将方法从查询(由安装程序使用)切换到exec.
所以,我最终得到:
$write = Mage::getSingleton('core/resource')->getConnection('core_write');
$write->exec($sql);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2239 次 |
| 最近记录: |