oracle

时间:2018-02-22 15:21:00

标签: php oracle

我想同时在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是否会影响答案。

我不确定程序是否是答案,如果答案是肯定的,那么在这个例子中,程序会如何?

非常感谢。

1 个答案:

答案 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();

可能存储过程更清晰。