mysqlのストアド関数またはストアドプロシージャで、後で実行できる文字列変数としてmysqlクエリを作成できるかどうか疑問に思いました。get_district_part ((district_id INT,county_id INT,city_id INT,zip_id INT)) RETURNS INT
テーブルを参照するストアド関数があります。
CREATE TABLE IF NOT EXISTS `modx`.covereage_district_part(
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
districtID INT NOT NULL,
countyID INT,
cityID INT,
zipID INT,
FOREIGN KEY (districtID) REFERENCES `modx`.coverage_district (id),
FOREIGN KEY (countyID) REFERENCES `modx`.coverage_county (id),
FOREIGN KEY (cityID) REFERENCES `modx`.coverage_city (id),
FOREIGN KEY (zipID) REFERENCES `modx`.coverage_zip (id)
);
get_distrct_part
行のIDと、、、、district_id
およびの組み合わせcounty_id
を返すことを目的city_id
としていzip_id
ます。問題は、これらのアイデアのいずれかを含む行のIDではなく、IDの正確な組み合わせに一致する行のIDを返したいということです。そのために、クエリステートメントをセグメント化して、提供されたIDに固有に構築されるようにします。可能であれば、nullを一致させる必要がないようにしています。
これはPHPで簡単に実行できることを理解していますが、他の理由がない場合はmysqlストアドプロセスとしてこれを実行し、他のすべての関数はストアドプロセスになります。