2015-07-21 61 views
2

我想請perlcritic,並且在我的代碼中可以輕鬆讀取SQL查詢。目前,這是我要做的事:如何在perl中格式化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在stmt和懸掛);結束也不好。

請在這個問題上提出一個很好的風格指南,我可以採用。

+0

你可以在'<<'SQL''後面加'';'而不是關閉一個。 –

+0

很酷,不知道! – MyGGaN

回答

5

我建議通過切換到DBIx::Class完全從您的程序中刪除所有SQL。如果這有點嚇人,那麼可能是像Data::Phrasebook::SQL這樣的中途之家。

通常,在您的Perl代碼中使用原始SQL語句是一個非常糟糕的主意。

+0

第二個看起來不錯,但不知道如何動態地用now()等文字構建查詢。 –

+0

第一個是**多**更好:-) –

+1

沒有進攻戴夫,但我對SQL更加熟悉和自信。有了dbix,我總是會考慮SQL如何看待底層。 –