Pass 1
Полагаю, DBDRIVE, DBNAME, DBUSER и DBPASS были определены через постоянный модуль:
use constant DBDRIVE => "informix"; # ...mitsake...
use constant DBNAME => "stores"; # Or whatever
use constant DBUSER => "me";
use constant DBPASS => "mine";
Вы должны использовать 'или' вместо '||'после вызова DBI->connect()
.
Из 'perldoc DBI':
$dbh = DBI−>connect($data_source, $username, $password, \%attr)
or die $DBI::errstr;
Вы можете получить более эффективную помощь при решении проблем, используя 'RaiseError =>1 'и / или' PrintError => 1 ';для этого они и существуют.
В общих чертах синтаксис процедуры EXECUTE PROCEDURE правильный, и должен работать нормально, если процедура ничего не возвращает ...
Проход 2
О, вы указываете DBD :: ODBC, а не DBD :: Informix.Таким образом, вы находитесь во власти большого количества кода, который я не знаю так хорошо, как я знаю DBD :: Informix.
Можем ли мы предположить, что вы можете успешно подключиться к базе данных, используя DBD ::ODBC?И изменить его и так далее?
Возможно, вам потребуется включить трассировку DBI.Вам также может понадобиться включить более низкий уровень.Используемый вами драйвер ODBC предоставлен Informix, или это драйвер IBM DB2 CLI (C Common Client), или драйвер, предоставленный кем-то другим?Какую версию Informix (IDS) вы используете?На какой платформе вы работаете?Какие версии Perl, DBI, DBD :: ODBC и различные драйверы вы используете?
Драйверы ODBC могут отправлять отправленные ему SQL-запросы.Я не уверен, что различные драйверы, которые я упомянул, будут делать с этим утверждением.
Pass 3
Вы рассматривали возможность обращения к списку рассылки dbi-users@perl.org
?Вот где тусуются сопровождающие DBI и DBD :: ODBC.