2017-05-20 5 views
-1

私は自分のDBに新しい列を追加したテーブルを持っています。このテーブルをPerlでクエリすると、このフィールドが空であるかどうか一度だけチェックします。最初の行だけでこの列の値を確認する必要があります。通常、私は、whileループ内の各行をチェックすることができますが、私は一度だけそれを行う必要があるので、私はそれをやって時間を無駄にしたくないDBIクエリの値を消費せずにチェックする

while (my $row = $sthmm->fetchrow_hashref()) { 
    # do stuff 
} 

を使用してクエリ結果を通過します。

どのようにして1つの行を取得し、それを消費することなく列の値をチェックすることができます。つまり、この条件を確認した後でもwhileループで結果全体を処理できます。

+0

最初に必要な結果を直接照会しないのはなぜですか? –

+1

最初にチェックするのはなぜですか? – Strawberry

答えて

4
if (my $row = $sth->fetchrow_hashref()) { 
    # Do stuff with first row 

    do { 
     # Do stuff to be done to each row 
    } while $row = $sth->fetchrow_hashref(); 
} 
+0

ボトム・ドリブン・ループ(なぜ英語で呼ばれているのですか?私はドイツ語を知っていますか?_fußgesteuerteSchleife_です)は、ここに行く正しい方法です。 – simbabque

+0

(トップテストとボトムテストのループと言います)トップテスト済みのループは、すでに第1行を読み込んでいるので、第2行から効果的に開始します。 – ikegami

関連する問題