Я пытаюсь сделать подпрограмму selectall_arrayref из DBI для возврата нечувствительных к регистру ключей хеша.Например:
my $dbh = DBI->connect('dbi:Oracle:' . 'host','user','pass',
{
RaiseError => 1,
PrintError => 0,
AutoCommit => 1
}
) || die( $DBI::errstr . "\n" );
$dbh->do('alter session set NLS_COMP=LINGUISTIC'); # this doesn't work
$dbh->do('alter session set NLS_SORT=BINARY_CI'); # this doesn't work
my $query = 'select test_id from test_table';
my $result = $dbh->selectall_arrayref($query, {Slice=>{}});
print(@$result[0]->{TEST_ID}); #works
print(@$result[0]->{test_id}); #does not work but I want to make it work
print(@$result[0]->{tEsT_Id}); #does not work but I want to make it work
Я знаю, что DBI имеет эту настройку:
$dbh->{FetchHashKeyName} = 'NAME_uc' #upper case keys
$dbh->{FetchHashKeyName} = 'NAME_lc' #lower case keys
$dbh->{FetchHashKeyName} = 'NAME' #default
Да, если я установлю один из них, он будет работать для соответствующего случая, но я хочу как-тоПерепишите подпрограмму selectall_arrayref, чтобы вернуть ключи без учета, чтобы я мог использовать нижний, верхний или комбинированный нижний и верхний регистр.
Как мне достичь чего-то подобного?
Мне было бы интересно добиться этого и на других подпрограммах из DBI.
В настоящее время я использую DBD :: Oracle для Oracle и DBD :: Sybase для Microsoft SQL Server.
Спасибо,