2016-02-13 31 views
1

everyone。在一行中运行多个更新perl与oracle db

是否有办法在一行中的oracle中执行一堆UPDATE和INSERTS数据库?

我得到的是类似的东西,但它没有工作,并没有返回错误信息。

my $query = "UPDATE ...; UPDATE...; INSERT...;" 
$sth = $db->prepare($query); 
$sth->execute() or die $sth->errstr; 
if ($sth->err){ 
    $content .= "error code: " . $sth->err . "msg:" . $sth->errstr; 
} 

在此先感谢!

+1

使用' - > do'而不是' - > execute'? – mob

+0

@mob我试过$ db-> do($ query);但它不起作用。 – davis

+0

尝试“BEGIN $ query END;” –

回答

1

不,这是不可能的。每DBI documentation

多个SQL语句可能无法在单个语句手柄相结合($某物)

我相信,这项决定是出于安全的原因所作,给从Little Bobby Tables额外的保护。

+0

非常感谢。 :) – davis

2

一个解决办法是把你的UPDATE/INSERT逻辑在存储过程中,并调用从Perl的存储过程,无论使用哪种prepareexecute,或者(如果你只需要调用它一次)do