簡體   English   中英

從PHP使用的pl / sql腳本中插入,刪除,更新

[英]Insert, delete, update from a pl/sql script use by PHP

我通過PHP應用程序啟動了一個pl / sql腳本,但是我注意到當腳本中有插入,更新或刪除操作時,腳本會停止。 雖然我直接在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: error during execution of trigger 因此它確實來自看起來像這樣的觸發器:

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_<nom_lot>_<id demande>_<n° version>_<description>_<date>.dat';
  :new.FORMAT_NOM_FICHIER_CONTROLE:='bcn_<nom_lot>_<id demande>_<n° version>_<date>.ctr';
  :new.FORMAT_NOM_FICHIER_JETON:='bcn_<nom_lot>_<id demande>_<n° version>_<date>.jet';
  :new.FORMAT_NOM_FICHIER_ZIP:='bcn_<nom_lot>_<id demande>_<n° version>_<date>';
  :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;

這可能是日期格式問題。

如果CREATED_ATUPDATED_AT都是日期,則= TO_CHAR(SYSDATE,'DD/MM/YY')將SYSDATE轉換為字符串,然后隱式將字符串轉換回日期。 隱式日期轉換取決於每個客戶端設置的NLS_DATE_FORMAT。

您可能已將SQL Developer設置為使用DD / MM / YY之類的東西,但是PHP使用了其他東西。 如果只想從SYSDATE中刪除時間,則應改用TRUNC(SYSDATE)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM