Нужна помощь в запуске оператора select в Perl-скрипте - PullRequest
0 голосов
/ 17 октября 2018
$START_PRI_AA=1;

$expression = "$SQLPLUS_DIR\\$SQLPLUS_EXEC -S $PLANSTAGE_DB_USER/$PLANSTAGE_DB_PASSWORD\@$PLANSTAGE_DB_ALIAS  
        'set pagesize 0
        set feedback off
        set verify off
        set heading off
        set echo off 
        select STATUS from jdaabppd.DFXHA_ENGINE_STATUS where ENGINE_NAME ='$ENV{PRI_AA_ENGINE}';
        exit;
        /'
        ";

print "\n\n expression is $expression \n\n";
$status = system($expression);

print "$status\n\n";

1 Ответ

0 голосов
/ 27 ноября 2018

Зачем использовать SQLPLUS из Perl, хотя у него уже есть отличные модули для взаимодействия с базами данных?

Прежде всего вам необходимо установить модули DBI и DBD :: Oracle, и тогда вы можете сделать что-то вроде:

use strict;
use warnings;
use DBI;

my $dbh = DBI->connect(
    "dbi:Oracle:host=locahost;port=1521;sid=$PLANSTAGE_DB_ALIAS",  # DSN of the database to connect 
    $PLANSTAGE_DB_USER,      # username
    $PLANSTAGE_DB_PASSWORD,  # password
    { RaiseError => 1 }      # die on any DBI error
);

my ($status) = $dbh->selectrow_array(
    "select STATUS from jdaabppd.DFXHA_ENGINE_STATUS where ENGINE_NAME ='?", # your sql query
    undef,                 # no specific options needed 
    $ENV{PRI_AA_ENGINE}    # bind value
);

Возможно, вам придется настроить DSN в соответствии с вашим вариантом использования, я сделал несколько предположений на основе фрагмента кода, который вы показали.Прочитайте документы DBI для более подробной информации.

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