2016-02-13 29 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