![](/img/trans.png)
[英]I can display database that is sql in php, but i don't know how to use the php insert/update/delete
[英]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_AT
和UPDATED_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.