Perl не может распечатать желаемый вывод - PullRequest
0 голосов
/ 25 февраля 2019

Привет! Я пишу Perl-скрипт для подключения к БД с помощью SQL Plus, но когда я запрашиваю данные, они не показывают корректный вывод, может кто-нибудь объяснить это.

$ perl test.pl -u user -p paswd -d база данных

while ($ARGV[0] =~ /^-/)
{
        $opt = shift;
        $dbuser = shift if ($opt eq "-u");
        $dbpasswd = shift if ($opt eq "-p");
        $db = shift if ($opt eq "-d");
}
$output=`echo "select sysdate from dual"  | sqlplus  $dbuser\/$dbpasswd\@$db`;
print $output;

Экран вывода: я хочу вывод как sysdate.

SQL*Plus: Release 11.2.0.3.0 Production on Mon Feb 25 13:13:38 2019

Copyright (c) 1982, 2011, Oracle.  All rights reserved.


Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

SQL> SQL>   2  Disconnected from Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

Ответы [ 2 ]

0 голосов
/ 26 февраля 2019

Sqlplus требует много настроек для использования.Я предлагаю:

$output=`( echo "set heading off" ; echo "set feedback off" ; echo "set newpage none" ; echo "set pagesize 0" ; echo "select sysdate from dual;" )  | sqlplus -s $dbuser\/$dbpasswd\@$db`;

И не забывайте грызть результат:

chomp $output
0 голосов
/ 26 февраля 2019

Я думаю, что ; отсутствует

$output=`echo "select sysdate from dual;"  | sqlplus  $dbuser\/$dbpasswd\@$db`;
...