DBL :: Oracle을 사용하여 Oracle 데이터베이스에 대해 SELECT를 실행하는 Perl 응용 프로그램이 있습니다.Perl 및 DBD :: Oracle - 가져올 수있는 행 수는 얼마입니까? RowsInCache?
그런 다음 어떤 행이 반환되었는지 확인하고 그 행을 기반으로 분기를 확인하고 싶습니다.
DBD :: Oracle의 rows() 메서드는 SELECT에 대해 (perldoc 및 테스트에 따라) -1을 반환하므로 MySQL에 대해 수행 할 작업이 작동하지 않습니다.
perldoc은 RowsInCache ("선택 항목에서 캐시의 페치되지 않은 행 수를 반환합니다.")를 호출하지만 내 데이터베이스 또는 명령문 핸들에서 호출하거나 검사하려고 시도하지 않습니다. 예컨대 :
if ($sth->RowsInCache > 0)
if ($sth::RowsInCache > 0)
if ($dbh->RowsInCache > 0)
if ($dbh::RowsInCache > 0)
내가 할 하나 또는 "초기화되지 않은 값의 사용" "개체 방법을 찾을 수 없습니다." 내 부분에 잘못된 구문이 있습니까?
나는 내가 원하는 것을 달성 떨어져 몇 가지 알고 있어요 :
첫째는 SELECT COUNT 할 행의 수를 보면 다음 실제 선택을한다. 그러나 이것은 명백하게 DB를위한 추가 작업입니다.
전화 할 경우
$ 행 = $ sth-> fetchrow_hashref;
$ 행이 없을 경우 $ 행이 정의되지 않으며 테스트 할 수 있습니다. 그러나 당신의 의도는, 당신은 당신이 이미 행이 있는지 테스트하는 첫 번째 행을 인출 한 사실을 처리 할 수있는 몇 가지 바보 같은 논리를 포함하는 하나 가지고 ...
$sth->execute($some_bind);
while ($row = $sth->fetchrow_hashref) {
...이 같은 경우 헤이 데이터베이스, 당신은 어떤 행을해야합니까 "라고 몇 가지 쉬운 방법이 있어야처럼 단지 것 같으면 ....
$sth->execute($some_bind);
$got_some_rows = 0;
while ($row = $sth->fetchrow_hashref) {
$got_some_rows = 1;
# other stuff
}
$sth->finish;
if ($got_some_rows == 0) {
...하지만 세상의 끝이 아니다 : 나 같은 것을 할 나를 위해? "
나는 분명한 뭔가를 놓치고 있습니까?
감사합니다.
'$ sth -> { 'RowsInCache'}'를 사용해 보셨습니까? 이것이 DBD 속성에 대한 일반적인 규칙이지만 Oracle 용을 특별히 사용하지 않았습니다. – AKHolland