为什么不能在oci_excute上执行完美的SQL语句?

时间:2012-06-30 05:38:18

标签: php sql oracle oci8

我有一些PHP代码通过OCI8库写入Oracle数据库。我有一个不会以编程方式执行的insert语句 - 如果我打印出语句并通过SquirrelSQL运行它会成功插入数据。我在代码中的其他地方删除并选择语句,它完美地工作。可能是什么问题?正如我所说,如果我打印$ om_query并手动运行它会成功插入。我没有收到任何其他错误。

$om_query = "INSERT INTO DB.TABLE(R1,R2) VALUES(V1,V2)";
$s2 = oci_parse($conn, $om_query);
$qs = oci_execute($s2);
oci_commit ($conn); 

if(!$qs){
    $ma = oci_error();
    $failedqueries .= '<br /><br />MAINQ: ' . $om_query . '<br /><b>OCI_ERROR_MSG: </b>' . $ma['message'];
}

oci_error()不附加任何有用的内容。

1 个答案:

答案 0 :(得分:-2)

检查您是否在受影响的表上没有打开的事务。 PL可能正在尝试删除插入的记录。

在Oracle中,您必须在修改数据后执行COMMIT或ROLLBACK操作(无论是通过插入,更新还是删除)。