Я использовал следующий код много раз прежде, когда вставлял значения в таблицы базы данных, используя perl
my $SRV='xxx';
my $DB='dbname';
my $db = DBI->connect("dbi:Oracle:$SRV/$DB", "user", "pword" ) or die "impossible de se connecter à $SRV / $DB";
my $insert_T1 = "INSERT INTO tablename (ColA, ColB) VALUES ( ?, ?) " ;
my $insert_T1_sth = $db->prepare($insert_T1) ;
Позже в коде я могу затем вызвать следующее, чтобы выполнить вставку
$insert_T1_sth->execute('val1','val2');
$insert_T1_sth->execute('val3','val4');
Таким образом, в основном, когда я использую функцию подготовки, описанную выше, я могу заменить записи, которые я хочу вставить, на вопросительные знаки, а затем поместить значения этих вопросительных знаков в операторы execute позже.
Итак, на мой вопрос:Могу ли я использовать знаки вопроса вместо имен столбцов в операторе подготовки?Я думаю, что нет, потому что, когда я пытаюсь выполнить следующее, я получаю ошибку времени выполнения на строке, где находятся операторы выполнения.
my $SRV='xxx';
my $DB='dbname';
my $db = DBI->connect("dbi:Oracle:$SRV/$DB", "user", "pword" ) or die "impossible de se connecter à $SRV / $DB";
$db->{AutoCommit} = 0 ;
my $insert_T1 = "INSERT INTO tablename (ColA, ?) VALUES ( ?, ?) " ;
my $insert_T1_sth = $db->prepare($insert_T1) ;
Затем, как и раньше, используйте
$insert_T1_sth->execute('colname1','val1','val2');
$insert_T1_sth->execute('colname2','val3','val4');