我在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