2011-06-08 32 views
5

Estoy intentando crear un instalador de módulo Magento, que a su vez creará un procedimiento almacenado.Magento: Crear procedimiento almacenado

El código para el procedimiento se ha ejecutado a través de: línea de comandos Toad, phpmyadmin y mysql.exe. Funcionó en todos 3. Sin embargo, falla cuando Magento va a ejecutarlo durante el proceso de instalación.

error:

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

Código 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(); 

Hay algún otro código en el medio, por supuesto, pero la simplificación no cambiaba el error. Supongo que tiene algo que ver con Delimeters y con la forma en que PDO/Magento los trata. Gracias.

+0

PHP 5.3, Windows 7 64, Apache 2 – djdy

Respuesta

6

Me di cuenta.

No necesité usar ningún delimitador, PDO puede encargarse solo.

Pero necesité cambiar el método de consulta (utilizado por el instalador) a exec.

Así, terminé con:

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