Почему бы не выполнить идеальный оператор 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 после изменения данных (будь то вставка, обновление или удаление).

Другие вопросы по тегам