Perl의 DBI를 사용하여 Perl 스크립트에서 Oracle 데이터베이스를 쿼리하고 있습니다. fetchrow_hashref를 사용하여 반환 된 행을 가져옵니다 (나중에 열 이름이 필요하기 때문에). 반환 된 행을 배열에 넣고 해당 배열에 대한 참조를 반환합니다. 그래서 기본적으로 해시에 대한 참조 배열에 대한 참조를 반환합니다. 이런 식으로 뭔가 :
my $sth = $dbh->prepare($query);
$sth->execute();
# Fetch all rows returned as hash references and put each of those
# references into the array @rows
@returned_rows =();
while ($row = $sth->fetchrow_hashref()) {
push(@returned_rows, $row);
}
# Return a reference to the array @rows
# Return a reference to an array of hash references
return \@returned_rows;
필드 중 하나가 null로 오면, 내가 얻을 : 나는 데이터베이스에서 null 값을 기대했기 때문에 나는 미확정 테스트해도하지만, OK입니다
Use of uninitialized value in concatenation (.) or string at sqlesl.pl line 49.
, 나는 DBI 문서가 정확히 있어야한다고 생각하지 않는 동일한 에러를 보게된다 :
fetchrow_arrayref의 대안. 다음 데이터 행을 가져오고 은 필드 이름과 필드 값 쌍을 포함하는 해시에 대한 참조로이를 반환합니다. null 필드는 해시에서 undef 값으로 반환됩니다.
위의 스 니펫을 테스트하는 데 사용한 코드 조각입니다. * $ rows_ref *가 위의 스 니펫이 반환하는 값이라고 가정 해 보겠습니다.
@rows = @$rows_ref;
$hash_ref = $rows[0];
%hash = %$hash_ref;
@keys = keys %hash;
foreach $key (@keys) {
next if (undef($hash{$key}));
print "$key: $hash{$key}\n";
}
누군가이 빛에 비추는 빛이 있습니까? 사전에
감사합니다.
참고 : 조건에서는
defined
를 대신 사용한다 'yourself – stevenl