如何在 perl 中格式化 SQL 语句(代码风格)

How to format SQL statements in perl (code-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
    );
}

该语句根本没有缩进,这使得它在上下文缩进时弹出。我觉得这很好,因为它可以很容易地找到声明,并且它们被分成几行以便于阅读。

但是,如果上下文没有缩进,这看起来真的很乱。如果可能的话,我不喜欢在我的 stmt 中引入换行符或不必要的空格。 stmt 末尾的 SQL 和悬挂的 ); 也不好。

请就此事提出一个我可以采纳的好的风格指南。

我建议您切换到 DBIx::Class. If that's a little scary, then perhaps a halfway house like Data::Phrasebook::SQL,从而从您的程序中完全删除所有 SQL。

一般来说,在您的 Perl 代码中使用原始 SQL 语句是一个非常糟糕的主意。