Проблема в выполнении оракула - PullRequest
0 голосов
/ 12 апреля 2011
    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. Но выбор запроса к базе данных и другой запрос, кроме того, что соединение не работает. Пожалуйста, укажите мне

    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();
     ....
     }

Приведенное выше изменение не работает для сеанса изменения другого запроса (выберите). Прогуглил, как выполнить несколько запросов. Но все равно это мне не помогает.Спасибо.

Ответы [ 2 ]

2 голосов
/ 12 апреля 2011

Это пропущенная кавычка во второй строке?

В качестве альтернативы, почему вы взаимодействуете с базами данных, используя их программы командной строки? Вы должны использовать что-то вроде DBI или DBIx :: Class.

0 голосов
/ 12 апреля 2011

ALTER SESSION будет действителен в этом сеансе, но если вы откроете больше сеансов для каждой команды sql.

Вы можете просто поставить префикс объектов базы данных в ваших запросах, чтобы обойти это требование, например, путем ссылкитаблицы как это:

SELECT * FROM USER.TABLE 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...