2011-06-08 223 views
5

我想創建一個Magento模塊安裝程序,它將依次創建一個存儲過程。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如何對待它們有關。謝謝。

+0

PHP 5.3,Windows 7的64,阿帕奇2 – djdy 2011-06-08 16:55:23

回答

6

我想通了。

我不需要使用任何分隔符,PDO可以自行處理它們。

但我確實需要將方法從查詢(由安裝程序使用)切換到exec。

所以,我結束了:

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