#perl #oracle
#perl #Oracle
Вопрос:
Below is the module in sybase.
sub execute_query{
$connect = "isql -S $SERVER-U $USER -P $PASS -D $DBNAME";
$pid = open2(*Rder, *Wrter, "$connect");
Writer->autoflush();
print Write qq!
set transaction isolation level 0
go
Select * from remtrench
go
!;
Wrter->close();
while(<Rder>)
{
Parse data
}
Приведенный выше код внес изменения для поддержки oracle ниже.
Я смог подключиться к oracle.Но выбор запроса к базе данных и другого запроса, кроме connection, не работает.Пожалуйста, направьте меня
sub execute_query{
$connect = "sqlplus $USER/PASS@SERVER
$pid = open2(*Rder, *Wrter, "$connect");
Writer->autoflush();
alter session set current_schema = $DBNAME;
Select * from remtrench;
Writer->close();
....
}
Вышеупомянутое мое изменение не работает для сеанса изменения другого запроса (select).Погуглил о том, как выполнить несколько запросов.Но все равно это мне не помогает.
Спасибо.
Комментарии:
1. извините, я не могу понять, о чем вы пытаетесь спросить. Возможно, вы могли бы рассказать нам, какое сообщение об ошибке вы получаете? «Не работает» не помогает.
Ответ №1:
Это из-за отсутствия закрывающей кавычки во второй строке?
В качестве альтернативы, почему вы взаимодействуете с базами данных, используя их программы командной строки? Вы должны использовать что-то вроде DBI или DBIx::Class.
Комментарии:
1. Нет .. В любом случае, использование DBI — лучшее предложение.. Спасибо
Ответ №2:
сеанс ALTER будет действителен в пределах этого сеанса, но не в том случае, если вы откроете больше сеансов для каждой команды sql.
Вы можете просто добавить префикс к объектам базы данных в своих запросах, чтобы обойти это требование, например, путем ссылки на таблицы, подобные этой:
SELECT * FROM USER.TABLE