2016-07-28 2 views
5

필자는 Perl 프로그램 샘플을 작성하여 데이터베이스 테이블에서 데이터를 삭제했습니다. DBI "execute"메소드의 반환 값으로 0E0을 얻는 이유는 무엇입니까?

내가 위의가 성공 메시지와 다음 삭제 된 행의 수를 인쇄해야 실행 한 경우

use DBI; 

my $dbh = DBI->connect("DBI:Pg:host=192.168.12.23;port=5432;", "adhi");                     
if ($dbh) { 

    print "Connected successfully\n"; 

    my $exe = $dbh->prepare("delete from perl_test.test"); 
    my $res = $exe->execute(); 
    if ($res) { 
     print "deleted the table successfully of rows: $res\n"; 
    } 
} 

, 내가 작성한 코드입니다.

표가 비어있는 경우 0 대신 0E0이 인쇄되었습니다. 이 값을 어떻게 반환하는지 모르겠습니다.

누군가가 어떻게 작동하는지 설명해 주시겠습니까?

+1

당신은 * ""'do' 메서드를 사용하여 "*"를 실행했지만 프로그램은 * do 메소드를 사용하지 않기 때문에 그 문장을 삭제했습니다. Perl 코드가 읽기 쉽도록 들여 씁니다. 특히 도움을 요청하기 전에. – Borodin

+0

감사합니다. 보로딘. 내가 바꿀거야. –

답변

9

이 방법으로 작업이 성공했는지 테스트 할 수 있습니다. 그 이유는 '0E0' (문자열로)이 true 값이지만 0은 Perl에서 false 값입니다. 따라서 :

  1. 당신은, (진정한 성공을 의미) 작업이 성공 여부를

  2. 를 결정하기 위해 if의 반환 값을 테스트 할 수 있습니다하지만 당신은 정확하게 알고 숫자로 반환 값을 사용할 수 있습니다 0E0이 숫자로 사용될 때 0으로 평가되기 때문에 삭제 된 행의 수. 당신이 삭제 된 행의 단지 수를해야하는 경우

, 당신은 $res + 0 또는 $res * 1를 사용할 수 있습니다. 그러나 작업이 성공적이라는 것을 테스트 한 후에 만.

관련 문제