2014-03-12 10 views
0

나는 이것에 관한 많은 기사를 보았고 아무도 저를 위해 일하지 않습니다. > {참조} (또는 문제에 접근하는 더 나은 방법을 이야기한다 -스칼라의 행 수 - Perl

$var1->{reference} = sql_get_rows(); 


sub sql_get_rows(){ 
    etc 
    return ($sth->fetchall_arrayref()); 
}; 

내가하고 싶은 것은 SQL 문에서 발견 $ VAR1을에 저장되는 행 알고있다 -이 코드가 있습니다. 나는 무엇을 쓸 $ var1에 -> {참조} 아래에 저장됩니다 내가 SQL 문에 의해 COUNT를 찾는 방법을 알고

warn Dumper ($var1->{reference}); 

'$VAR1 = [ 
     [ 
     26412502, 
     'initial' 
     ], 
     [ 
     49246682, 
     'title' 
     ], 

참고, 내가 알고 싶은 것을하지 이잖아

감사

을..

답변

2
print "Rows = " . scalar @{$var1->{reference}}; 
+0

에서 : (210) DBI를 사용하는 경우, @ThisSuitIsBlackNot는 지적이 그냥 데이터 구조를 계산, 당신은 모든 레코드를 당겨 그래서 만약, 작동하지 않을 수 rows method

my $sth = $dbh->prepare(q{...}); $sth->execute(@bound_variables) or die $dbh->errstr; print "Rows = " . $sth->rows; 

사용 당신이 링크 한 문서들 : "일반적으로'-SELECT'가 아닌 ('UPDATE'와'DELETE'와 같은 몇몇 특정 연산에 대해서) 행 카운트에만 의존 할 수 있습니다. 또는' SELECT 명령문. SELECT 문에 대해서는 일반적으로 얼마나 많은 행이 반환되는지를 알 수 없다. 일부 드라이버는 응용 프로그램이 지금까지 가져온 행 수를 반환하지만 다른 행은 모든 행을 가져올 때까지 -1을 반환 할 수 있습니다. *'rows' 메쏘드 나'$ DBI :: rows'를'SELECT' 문과 함께 사용하는 것은 권장하지 않습니다. * "(강조 표시) – ThisSuitIsBlackNot

+0

4 분 안에 똑딱이 감사합니다! – Geo1986

+0

OP에 이미 배열 참조가 있기 때문에 질의 결과와 함께, 왜 단지'my $ rows = @ $ arrayref'가 아니겠습니까? – ThisSuitIsBlackNot