Я запускаю скрипт pl/sql с помощью PHP-приложения, но я замечаю, когда в скрипте есть либо вставка, либо обновление, либо удаление, скрипт останавливается. Хотя нет проблем, если я использую этот скрипт непосредственно в sqldeveloper.
Есть ли что-то особенное для использования вставки, удаления, обновления?
благодаря
procedure update_nbr_execution
(dem_id in number)
IS
BEGIN
UPDATE BCN_DEMANDE_EXTRACTION
SET nombre_execution = nvl(nombre_execution,0) + 1
WHERE id = dem_id;
END;
В моем php-файле:
$query = "BEGIN
ecrire_requete(:demande_id, :p_nom);
END;";
$stid = oci_parse($conn, $query);
$tabvars = oci_new_collection($conn,'MYTABLETYPE');
oci_bind_by_name($stid, ':p_nom', $tabvars, -1, SQLT_NTY);
oci_bind_by_name($stid, ':demande_id', $_POST['demande_id']);
oci_execute($stid, OCI_DEFAULT);
И update_nbr_execution
является вызовом ecrire_requete
.
Существует триггер, связанный с update_nbr_execution
, дата поля автоматически обновляется с помощью fiel nbr_execution. Может ли это произойти с триггера?
Изменить: после выделения некоторой части я получаю эту ошибку: ORA-04088: ошибка во время запуска триггера
. Таким образом, это происходит от триггера, который выглядит так:
create or replace
TRIGGER BCN_FORMAT_NOM_FICHIER_BI
BEFORE INSERT OR UPDATE ON BCN_DEMANDE_EXTRACTION
REFERENCING NEW AS NEW
FOR EACH ROW
DECLARE
BEGIN
if inserting then
:new.FORMAT_NOM_FICHIER_DONNEES:='bcn_____.dat';
:new.FORMAT_NOM_FICHIER_CONTROLE:='bcn____.ctr';
:new.FORMAT_NOM_FICHIER_JETON:='bcn____.jet';
:new.FORMAT_NOM_FICHIER_ZIP:='bcn____';
:new.CREATED_AT:=TO_CHAR(SYSDATE,'DD/MM/YY');
:new.UPDATED_AT:=TO_CHAR(SYSDATE,'DD/MM/YY');
else
:new.UPDATED_AT:=TO_CHAR(SYSDATE,'DD/MM/YY');
end if;
END;