我在Magento中有一个工作模块,它是在我们安装之外使用的一些自定义代码之后建模的。此模块目前将5个表添加到数据库以存储信息,并且我已将Admin扩展为CRUD信息。这里的最终目标是将这些定制程序的大部分转移到Magento中。在Magento中为模块创建数据库功能
目前我们的自定义代码位于Magento之外,并打到一个单独的数据库。这个数据库具有相同的5个表,一个存储过程和4个函数。我现在想要做的是将存储过程和函数移动到Magento的数据库中,并更改自定义代码以从Magento的数据库中调用它的所有数据。但是,我似乎无法弄清楚应如何为Magento设置“CREATE FUNCTION”调用来正确执行它。
我使用的SQL是:
DROP FUNCTION IF EXISTS {$this->getTable('fn_Get_HardinessZone')};
CREATE FUNCTION {$this->getTable('fn_Get_HardinessZone')}(IN ZipCode varchar()) RETURNS integer AS
DECLARE Result integer;
BEGIN
SELECT MAX(Zone) into Result
FROM AMI_zones
WHERE (Hfzip <= LEFT(ZipCode, 5)) AND (Htzip >= LEFT(ZipCode, 5));
if Result is null or Result < 1 or (Result > 11 and Result <> 99) Then
/*if the left most character is alpha, then set the zone to 98 for Canada*/
if Left(zipCode, 1) >= 'A' and LEFT(zipcode,1) <= 'Z' THEN
set result = 98;
else
set Result = 99;
End if;
END if;
RETURN Result;
END;
但这总是会生成以下错误:
SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'IN ZipCode varchar()) RETURNS'
那么什么是格式化的SQL调用适当的方式在一个模块中运行安装/更新脚本在Maganeto的数据库中插入函数或存储过程?
您如何执行这个查询? – 2012-07-20 20:03:07
只需确认一下,您已将该功能标记为与您的表名相同的名称? – trickyzter 2012-07-20 20:15:48
@tim这是包含在我的模块中的sql_update.php文件中。所以当我将模块修改为相同的编号时它会被执行。 – 2012-07-20 21:11:20