Почему бы не выполнить идеальный оператор SQL на oci_excute?
У меня есть некоторый PHP-код, пишущий в базу данных Oracle через библиотеку OCI8. У меня есть оператор вставки, который не будет выполняться программно - если я распечатываю оператор и запускаю его через 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 ответ
Убедитесь, что у вас нет открытой транзакции на соответствующей таблице. Возможно, PL пытается удалить вставленную запись.
В Oracle вы должны выполнить операцию COMMIT или ROLLBACK после изменения данных (будь то вставка, обновление или удаление).