Ниже приведен сценарий Perl, который я написалЧто с этим PERL скрипт
my $COUNT_1;
my $parameter1 = 'PU_CLERK';
$COUNT_1 = `sqlplus -s hr/password\@dbname\@sql_script.sql $parameter1`;
SQL SCRIPT:
select count(*) from employees
where job_id <> '&1'
and salary > 9000
and commission_pct is not null
order by first_name desc
/
exit;
Когда я запускаю этот запрос, передавая аргумент & 1 она дает мне строка с сообщением об ошибке. Но когда я запускаю один и тот же запрос по жесткому кодированию, я получаю вывод правильно (счет равен 15, что является правильным ответом).
select count(*) from employees
where job_id <> 'PU_CLERK'
and salary > 9000
and commission_pct is not null
order by first_name desc
/
exit;
Я не могу понять, где я иду не так. Как передать параметры в Perl. Мы использовали тот же путь в сценарии оболочки, и он работал абсолютно нормально.
EDIT:
Это им сообщение об ошибке получения
perl call_sql.pl
value of first variable isold 2: whe
re job_id <> '&1'
new 2: where job_id <> 'PU_CLERK'
15
Таким образом, ее в основном не печатает значение 15 его печати все те строки, также, когда я использую «& 1» в моем сценарии SQL
EDIT2:
Привет, ребята, наконец, он работает. В моем sql-коде вместо того, чтобы давать '& 1' я дал '$ 1' Теперь я хочу знать, что $ 1 имеет какое-то значение в Perl? Спасибо ..
Почему бы не использовать модуль ['DBI'] (https://metacpan.org/pod/DBI)? – TLP
Если вы вызываете внешнюю программу из perl, вы не можете просто ввести команду. Вам нужно каким-то образом выполнить его. См. [Как выполнять внешние программы] (http://www.perlhowto.com/executing_external_commands). –
Привет, TLP Я не знаю, как использовать DBI :( – user2647888