私が取り組んでいる現在のコード ベースは、その場しのぎの条件付き文字列連結でいっぱいで、明確な SQL クエリとは言えません。私はそれらを保守可能にしたいのですが、DBIx::Classを使用するのは複雑すぎて今のところ (巨大なレガシー ベース) に移行できないため、何らかの SQL ジェネレーターを使用して、少なくともそれらをより堅牢にすることを検討しています。オブジェクト指向またはその他のクリーンな手法で SQL を作成します (DB の処理は不要です)。
そのジェネレーターに対する一般的な制約の 1 つは、ストアド プロシージャを適切な方法で使用できることです。これは、私のアプリケーションはほとんどストアド プロシージャに基づいているためです。たとえば、私はする必要がありSELECT * FROM StoredProcedure(Parameter) WHERE ...
ます。Fey::SQL、SQL::Abstractなどを調べましたが、この種のステートメントの「インライン SQL」以外のサポートは見当たりませんでした。DBIx::ClassEXECUTE ...
でさえサポートされていません。率直に言って本当に信じられません。おそらく間違った場所を探していたのでしょう。
私は実際にFey::SQLのアプローチが好きでしたが、ある種のスキームが必要であることがわかりました:
$select->select( $user->columns( 'user_id', 'username' ) )
->from( $user, $group )
->where( $group->group_id, 'IN', 1, 2, 3 )
->and ( $func, 'LIKE', 'smith%' );
あなたは何をお勧めします?