如何格式化perl中的SQL语句(代码样式)

MyG*_*GaN 2 perl coding-style

我想取悦perlcritic并在我的代码中轻松阅读SQL查询.目前我是这样做的:

if (defined $dbh) {
    $sth = $dbh->prepare(<<'SQL'
SELECT firstname, lastname, email, country
FROM Person
JOIN Country ON Person.countryID = Country.ID
WHERE age = ?
  AND sex = ?
LIMIT 100
SQL
    );
}
Run Code Online (Sandbox Code Playgroud)

如果上下文缩进,则该语句不会缩进所有女巫使其弹出.我发现这很好,因为它可以很容易地发现stmt,它们被分成几行,使它们易于阅读.

但是,如果上下文没有缩进,这看起来很麻烦.如果可能的话,我不想在我的stmt中引入换行符或不必要的空格.也是SQL在stmt结束时,悬挂);也不好.

请提出一个关于我可以采用的这个问题的好的风格指南.

Dav*_*oss 5

我建议通过切换到DBIx :: Class来完全删除程序中的所有SQL .如果这有点可怕,那么也许像Data :: Phrasebook :: SQL这样的中途房子.

通常,在Perl代码中使用原始SQL语句是一个非常糟糕的主意.

  • 我曾经是完全一样的.但是你可以让DBIC向你展示它正在运行的SQL,经过几周的检查后,我意识到它在写SQL时和我一样好(或者,也许更好):-) (2认同)