Мне нужно получить все строки из SQL-запроса oracle, а затем перебрать все строки с помощью PERL.
Ниже приведены некоторые примеры данных и таблица
create table t1 (col1 varchar2(30));
insert into t1 values ('row1');
insert into t1 values ('row2');
insert into t1 values ('row3');
insert into t1 values ('row4');
insert into t1 values ('row5');
commit;
Я написал сценарий PERLкак ниже, чтобы получить таблицу выше -
# connexion a la base
my $dbh = DBI->connect( 'dbi:Oracle:'.$dbname,
$dbusername,
$pass,
{ PrintError => 0,
RaiseError => 1
}
) || die "Erreur lors de la connexion: $DBI::errstr";
print ("Connexion à la base de données $dbname avec $dbusername OK \n");
$requete = "select col1 from t1";
$sth_sql = $dbh->prepare($requete);
$sth_sql->execute(@row);
@row=$sth_sql->fetchrow_array;
my $size = @row;
print $size;
#$first=@row[0];
#$sec=@row[1];
print $sec;
print $first;
foreach $script_name (@row) {
print "$script_name\n";
}
приведенный выше код возвращает только одну строку, а размер массива показывает только 1 элемент.
Мне нужно выбрать все пятьстроки, а затем перебирайте их по очереди.
, пожалуйста, предложите, что мне здесь не хватает !!
Я использую базу данных Oracle.
Спасибо
РЕДАКТИРОВАТЬ:
Я сделал некоторые изменения, и теперь он работает нормально
$requete = "select col1 from t1";
$sth_sql = $dbh->prepare($requete);
$sth_sql->execute();
#@row=$sth_sql->fetchrow_array;
$sth_sql->bind_columns(undef, \$script_name);
print $sec;
print $first;
while ($sth_sql->fetch()) {
$script_sql=$script_name.".sql";
print "$script_sql\n";
}