Я уже искал в Интернете, и ответы всегда одинаковы, с небольшими отклонениями, но я не получил никакого результата.
В Oracle (версия 11.2.0.40) я написал хранимую процедуру для тестирования, которое удаляет только записи из таблицы в соответствии с переданным аргументом. В PHP через PDO я создал соединение и вызвал хранимую процедуру, передав ей параметр для удаления записей.
Однако ответа нет, даже по ошибке в CATCH.
В качестве теста я переименовал хранимую процедуру в Oracle и запустил PHP, который затем обвинил ошибку в том, что процедуры не существует, что можно было бы ожидать.
Ниже процедура и ниже код PHP:
CREATE OR REPLACE PROCEDURE
p_PesquisaRateio (siglaUsuario IN VARCHAR2)
AS
BEGIN
DELETE FROM RCR.CST_1410_RATEIO_CRGOMSIM WHERE USUARIO = siglaUsuario;
commit;
END;
----- Метод класса для подготовки и выполнения процедуры
public function passarParametro($sentencaCriacao,$siglaUsuario) {
try {
$sql_stmt = $this->dbh->prepare($sentencaCriacao);
$sql_stmt->bindParam(':siglaUsuario',$siglaUsuario);
$sql_stmt->execute();
}
catch (PDOException $erro){
echo "Não foi possivel excluir os dados do banco: ".$erro->getMessage();
}
}
----- Подготовка и вызов процедура
require("PDOConnection.php");
$dbh = new PDOConnection();
$sentencaCriacao ="Call p_PesquisaRateio(:siglaUsuario)";
$dbh->passarParametro($sentencaCriacao,"'".$siglaUsuario."'");
---- Тестирование в PL SQL Разработчик
begin
p_PesquisaRateio('MSIM' );
end;
Вышеуказанное выполнение в порядке, данные удаляются в таблице, но не через PHP.