我想同时在ORACLE版本11g中执行两个查询,并注意如果一个或两个查询失败,则必须将两个表都返回到先前的状态。
在我的情况下,我需要进行更新,稍后再插入另一个表,所以查询将大致如下:
$query="UPDATE table1 SET attr1 = ? WHERE whatever";
$stmt = $this->oracleDB->prepare($query);
$stmt->bindValue(1, $attr1, "string");
$stmt->execute();
$query="INSERT INTO table2 (attr2) VALUES (?)";
$stmt = $this->oracleDB->prepare($query);
$stmt->bindValue(1, $attr2, "string");
$stmt->execute();
此外,我正在使用绑定系统来更安全地发送变量。不确定If是否会影响答案。
我不确定程序是否是答案,如果答案是肯定的,那么在这个例子中,程序会如何?
非常感谢。
答案 0 :(得分:1)
您可以使用匿名PL / SQL块来运行多个语句:
$query=" BEGIN UPDATE table1 SET attr1 = ? WHERE whatever;
INSERT INTO table2 (attr2) VALUES (?);END; ";
$stmt = $this->oracleDB->prepare($query);
$stmt->bindValue(1, $attr1, "string");
$stmt->bindValue(2, $attr2, "string");
$stmt->execute();
可能存储过程更清晰。