インストールの外部で使用するカスタムコードをモデルにしたMagentoの作業モジュールがあります。このモジュールは現在、データベースに 5 つのテーブルを追加して情報を保存しています。管理者を拡張して情報を CRUD しました。ここでの最終的な目標は、このカスタム プログラミングの大部分を 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'
では、関数またはストアド プロシージャを Maganeto のデータベースに挿入するために、モジュールのインストール/更新スクリプトで実行される SQL 呼び出しをフォーマットする適切な方法は何ですか?