如何在 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 语句是一个非常糟糕的主意。
我想取悦 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 语句是一个非常糟糕的主意。