我正在处理的当前代码库充满了临时条件字符串连接,产生的 SQL 查询不够清晰。我想让它们可维护,但由于现在使用DBIx::Class太复杂而无法迁移(巨大的遗留基础),我希望至少通过使用某种 SQL 生成器使它们更健壮,这只会通过面向对象或任何其他干净的技术(无需数据库处理)创建 SQL。
该生成器的一个一般限制是能够以理智的方式使用存储过程,因为我的应用程序主要基于这些。例如,我需要SELECT * FROM StoredProcedure(Parameter) WHERE ...
. 我研究了Fey::SQL、SQL::Abstract和其他一些,但除了“内联 SQL”之外,没有看到对这种语句的任何支持。我也没有看到对 的任何支持EXECUTE ...
,甚至在DBIx::Class中也没有,坦率地说,我真的不敢相信,可能我一直在寻找错误的地方。
我实际上很喜欢Fey::SQL的方法,直到我发现它需要某种方案:
$select->select( $user->columns( 'user_id', 'username' ) )
->from( $user, $group )
->where( $group->group_id, 'IN', 1, 2, 3 )
->and ( $func, 'LIKE', 'smith%' );
你会推荐什么?