我使用perl时遇到问题。问题是我想在数据库中添加多行。现在我有一个列表,1可以在数据库中插入1行。但只有1因为那时我得到一个错误,因为它不是唯一的。这是真的,但我想添加更多的1行,所以我在互联网上发现我需要使用foreach循环,但我不知道如何。
下面是剧本:
sub new{
local $/; $_ = $text; $match=$_;
my @splitline = split/\n/, $match;
foreach my $Sngline(@splitline)
{
$bla = print " $&\n", if($Sngline=~m/^pc([^\s]*)\s/g)
}
}
my $db_ora = DBIx::Simple->connect('dbi:Oracle:host=10.42.60.15;sid=centndsa;port=1521','NDSCENTR', 'NDSCENTR');
sub test {
$db_ora->query("Select TEST1 FROM script");
}
sub ba
{
print new();
$db_ora->query("insert into SCRIPT (TEST1) values(?)", $bla) or error(DBIx::Simple->error);
return;
}
print ba();
print $bla;
刚刚做了一些调整以清理事情
my $db_ora = DBIx::Simple->connect('dbi:Oracle:host=10.42.60.15;sid=centndsa;port=1521','NDSCENTR', 'NDSCENTR');
sub new{
my $db_ora = DBIx::Simple->connect('dbi:Oracle:host=10.42.60.15;sid=centndsa;port=1521','NDSCENTR', 'NDSCENTR');
local $/; $_ = $text; $match=$_;
my @splitline = split/\n/, $match;
foreach my $Sngline(@splitline)
{
$bla = print " $&\n", if($Sngline=~m/^pc([^\s]*)\s/g);
$bla2 = print " $&\n", if($Sngline=~m/^pc([^\s]*)\s/g);
$db_ora->query("insert into SCRIPT (TEST1,TEST2) values(?,?)", $bla, $bla2);
return;
print $bla;
print $bla2;
}
}
print new();
答案 0 :(得分:1)
这可能是
$db_ora->prepare("insert into SCRIPT (TEST1,TEST2) values(?,?)", $bla, $bla2);
$db_ora->execute();
答案 1 :(得分:-1)
for循环看起来很好。
然而,在循环内if之后缺少分号。
$bla = print " $&\n", if($Sngline=~m/^pc([^\s]*)\s/g);
在perl中,DO if (CONDITION);
可以将DO作为一行,否则if ( ){}
此外,就我在这里看到的而言,$ bla似乎是未宣布的。